中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站建設(shè)與維護(hù)模擬一新聞?lì)^條免費(fèi)下載安裝

網(wǎng)站建設(shè)與維護(hù)模擬一,新聞?lì)^條免費(fèi)下載安裝,移動(dòng)端網(wǎng)站開發(fā),康巴什住房和城鄉(xiāng)建設(shè)局網(wǎng)站題目鏈接 Leetcode.1238 循環(huán)碼排列 Rating : 1775 題目描述 給你兩個(gè)整數(shù) n和 start。你的任務(wù)是返回任意 (0,1,2,,...,2^n-1)的排列 p,并且滿足: p[0] startp[i]和 p[i1]的二進(jìn)制表示形式只有一位不同p[0]和 p[2^n -1]的二進(jìn)制表示形式也…

題目鏈接

Leetcode.1238 循環(huán)碼排列 Rating : 1775

題目描述

給你兩個(gè)整數(shù) nstart。你的任務(wù)是返回任意 (0,1,2,,...,2^n-1)的排列 p,并且滿足:

  • p[0] = start
  • p[i]p[i+1]的二進(jìn)制表示形式只有一位不同
  • p[0]p[2^n -1]的二進(jìn)制表示形式也只有一位不同

示例 1:

輸入:n = 2, start = 3
輸出:[3,2,0,1]
解釋:這個(gè)排列的二進(jìn)制表示是 (11,10,00,01)
所有的相鄰元素都有一位是不同的,另一個(gè)有效的排列是 [3,1,0,

示例 2:

輸出:n = 3, start = 2
輸出:[2,6,7,5,4,0,1,3]
解釋:這個(gè)排列的二進(jìn)制表示是 (010,110,111,101,100,000,001,011)

提示:

  • 1<=n<=161 <= n <= 161<=n<=16
  • 0<=start<2n0 <= start < 2^n0<=start<2n

分析:
根據(jù)題目要求的 二進(jìn)制表示形式只有一位不同就表明了我們要構(gòu)造的就是 格雷碼。學(xué)過 數(shù)字電路 的同學(xué)可能對(duì)它還有印象。

對(duì)于這樣的 從高位到低位 的二進(jìn)制數(shù) B=Bn?1Bn?2...B3B2B1B0B = B_{n-1}B_{n-2}...B_{3}B_{2}B_{1}B_{0}B=Bn?1?Bn?2?...B3?B2?B1?B0?,有他對(duì)應(yīng)的格雷碼 G=Gn?1Gn?2...G3G2G1G0G = G_{n-1}G_{n-2}...G_{3}G_{2}G_{1}G_{0}G=Gn?1?Gn?2?...G3?G2?G1?G0?。

二進(jìn)制數(shù) 轉(zhuǎn)換成 格雷碼 的規(guī)則如下:

  • 對(duì)于最高位保留,即 Gn?1=Bn?1G_{n-1} = B_{n-1}Gn?1?=Bn?1?。
  • 除了最高位的其他位,Gi=Bi+1⊕BiG_{i} = B_{i+1}\oplus B_{i}Gi?=Bi+1?Bi?

所以我們可以先預(yù)處理出所有的[0,2^n)格雷碼,最后再按照 start分成兩段拼起來即可。

時(shí)間復(fù)雜度:O(2n)O(2^n)O(2n)

C++代碼:

class Solution {
public:vector<int> circularPermutation(int n, int start) {vector<int> grey;int s = 0;for(int i = 0;i < (1 << n);i++){//x 即為 二進(jìn)制數(shù)i 的格雷碼int x = i ^ (i >> 1);//由 s 將 [0,2^n) 分為兩段,[s,2^n) [0,s)if(x == start) s = i;grey.push_back(x);}vector<int> ans;//先加上以 s 開頭的那段 即 [s,2^n)for(int i = s;i < (1 << n);i++) ans.push_back(grey[i]);//再拼接上這一段  [0,s)for(int i = 0;i < s;i++) ans.push_back(grey[i]);return ans;}
};

Java代碼:

class Solution {public List<Integer> circularPermutation(int n, int start) {List<Integer> grey = new ArrayList<>();int s = 0;for(int i = 0;i < (1 << n);i++){int x = i ^ (i >> 1);if(x == start) s = i;grey.add(x);}List<Integer> res = new ArrayList<>();for(int i = s;i < (1 << n);i++) res.add(grey.get(i));for(int i = 0;i < s;i++) res.add(grey.get(i));return res;}
}
http://www.risenshineclean.com/news/39977.html

相關(guān)文章:

  • 返利網(wǎng)站程序產(chǎn)品推廣
  • 北京網(wǎng)站制作西安西安網(wǎng)紅
  • 做網(wǎng)站和web前端一樣嗎百度seo優(yōu)化招聘
  • 成都網(wǎng)站建設(shè)贏展成都網(wǎng)站建設(shè)方案推廣
  • 網(wǎng)站建設(shè)預(yù)付款比例惠州網(wǎng)絡(luò)營(yíng)銷
  • 成都廣告公司網(wǎng)站建設(shè)瑞金網(wǎng)絡(luò)推廣
  • 邯鄲網(wǎng)站建設(shè)公司群站優(yōu)化之鏈輪模式
  • 企業(yè)商務(wù)網(wǎng)站建設(shè)策劃書查詢域名注冊(cè)信息
  • 17網(wǎng)站一起做網(wǎng)店揭陽(yáng)seo合作
  • wordpress自定義登陸頁(yè)面天津seo方案
  • 用表格做網(wǎng)站廊坊首頁(yè)霸屏優(yōu)化
  • 網(wǎng)站建設(shè)要求百度指數(shù)疫情
  • wordpress網(wǎng)站設(shè)計(jì)作業(yè)線下營(yíng)銷推廣方式都有哪些
  • logosc網(wǎng)站怎么做的網(wǎng)絡(luò)營(yíng)銷的基本特征有哪七個(gè)
  • 長(zhǎng)沙建設(shè)公司網(wǎng)站網(wǎng)絡(luò)推廣產(chǎn)品公司
  • 小游戲網(wǎng)站審核怎么做百度信息
  • 迅馳互聯(lián)網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣怎么樣廣東云浮疫情最新情況
  • 網(wǎng)站建設(shè) 大公司小公司seo排名優(yōu)化是什么意思
  • 做ppt哪個(gè)網(wǎng)站好百度seo查詢
  • 網(wǎng)站app用什么語(yǔ)言開發(fā)的互聯(lián)網(wǎng)推廣運(yùn)營(yíng)
  • 如何修改wordpress優(yōu)化公司
  • 建設(shè)網(wǎng)站需要的工具廣州seo推廣公司
  • behance設(shè)計(jì)官網(wǎng)網(wǎng)址提供seo服務(wù)
  • 畢設(shè)做網(wǎng)站具體步驟seo關(guān)鍵詞快速提升軟件官網(wǎng)
  • 旅游網(wǎng)站開發(fā)項(xiàng)目策劃書中國(guó)四大軟件外包公司
  • 常德網(wǎng)站建設(shè)要點(diǎn)網(wǎng)站買賣交易平臺(tái)
  • 電子商務(wù)的就業(yè)方向seo網(wǎng)站優(yōu)化是什么
  • 昆明網(wǎng)站建設(shè)哪家好網(wǎng)絡(luò)推廣入門教程
  • 怎樣在谷歌做網(wǎng)站站內(nèi)關(guān)鍵詞排名優(yōu)化軟件
  • vps做網(wǎng)站空間長(zhǎng)春網(wǎng)絡(luò)優(yōu)化哪個(gè)公司在做