LeetCode 1238. 循环码排列(格雷编码+旋转数组)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1238. 循环码排列(格雷编码+旋转数组)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給你兩個整數 n 和 start。你的任務是返回任意 (0,1,2,,...,2^n-1) 的排列 p,并且滿足:
p[0] = start p[i] 和 p[i+1] 的二進制表示形式只有一位不同 p[0] 和 p[2^n -1] 的二進制表示形式也只有一位不同 示例 1: 輸入:n = 2, start = 3 輸出:[3,2,0,1] 解釋:這個排列的二進制表示是 (11,10,00,01)所有的相鄰元素都有一位是不同的,另一個有效的排列是 [3,1,0,2]示例 2: 輸出:n = 3, start = 2 輸出:[2,6,7,5,4,0,1,3] 解釋:這個排列的二進制表示是 (010,110,111,101,100,000,001,011)提示: 1 <= n <= 16 0 <= start < 2^n來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/circular-permutation-in-binary-representation
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
本題是以下兩題的組合
LeetCode 89. 格雷編碼
LeetCode 189. 旋轉數組(環形替換)
- 生成格雷編碼
- 找到start所在的位置,旋轉數組,往右挪 2^n-i 個位置
總結
以上是生活随笔為你收集整理的LeetCode 1238. 循环码排列(格雷编码+旋转数组)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 917. 仅仅反转字母
- 下一篇: LeetCode 1497. 检查数组对