class Solution {//其实就是格雷码的计算,但是指定了开始的数字,我暂时只想到了这个笨办法,就是遇到了start之后,再将之后的值加进来
public List<Integer> circularPermutation(int n, int start) {
int count = (int)Math.pow(2,n);
int flag = 0;
int flagi = 0;
List<Integer> res = new ArrayList<>();
for(int i = 0; i < count; i++){
int temp = (i) ^ (i >> 1);
if(temp == start) {
flag = 1;
flagi = i;
}
if(flag == 1){
res.add((i) ^ (i >> 1));
}
}
for(int i = 0; i < flagi; i++){
res.add((i) ^ (i >> 1));
}
return res;
}
}
Leetcode160周赛5239. 循环码排列
最新推荐文章于 2019-11-05 11:57:03 发布