题意:
解题思路:
思路:1. 2的n次方 = 1 << n位2. i >> 1 右移一位相当于除以23. i ^ (i >> 1) 异或相同为0,不同为10 ^ (0 / 2 = 0) = 01 ^ (1 / 2 = 0) = 12 ^ (2 / 2 = 1) = 33 ^ (3 / 2 = 1) = 2
PHP代码实现:
class Solution { /** * @param Integer $n * @return Integer[] */ function grayCode($n) { $res = []; //2的n次方 = 1 << n位 for ($i = 0; $i < 1 << $n; $i ++) { //$i >> 1 右移一位相当于除以2 //$i ^ ($i >> 1) 异或相同为0,不同为1 array_push($res, $i ^ $i >> 1); } return $res; }}
GO代码实现:
func grayCode(n int) []int { res := []int{} for i := 0; i < 1 << n; i++ { res = append(res, i ^ i >> 1) } return res}