解决这道题主要是能够解决格雷编码的数学逻辑,就是找规律,我查了一下资料,有好几种解释,选了其中按位运算的一种,就是将给定的数从0到这个数(i^(i/2))就可以得到编码。
public class Solution { public IList<int> GrayCode(int n) { IList<int> ret=new List<int>(); for(int i=0;i<=Math.Pow(2,n)-1;i++) { int num; num=i^(i/2); ret.Add(num); } return ret; } }