日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 1734. 解码异或后的排列(位运算)

發(fā)布時(shí)間:2023/11/29 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 1734. 解码异或后的排列(位运算) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

給你一個(gè)整數(shù)數(shù)組 perm ,它是前 n 個(gè)正整數(shù)的排列,且 n 是個(gè) 奇數(shù) 。

它被加密成另一個(gè)長(zhǎng)度為 n - 1 的整數(shù)數(shù)組 encoded ,滿足 encoded[i] = perm[i] XOR perm[i + 1] 。比方說(shuō),如果 perm = [1,3,2] ,那么 encoded = [2,1] 。

給你 encoded 數(shù)組,請(qǐng)你返回原始數(shù)組 perm 。題目保證答案存在且唯一。

示例 1:

輸入:encoded = [3,1]
輸出:[1,2,3]
解釋:如果 perm = [1,2,3] ,那么 encoded = [1 XOR 2,2 XOR 3] = [3,1]
示例 2:

輸入:encoded = [6,5,4,6]
輸出:[2,4,1,5,3]

解題思路

設(shè)x=1 ^ 2 ^ 3 ^ …^n
那么perm[0]=x ^ encoded[1] ^ encoded[3]…
因?yàn)閑ncoded[i] = perm[i] XOR perm[i + 1],所以perm[i + 1]=encoded[i] XOR perm[i]
若知道了perm[0]自然可以推出perm[1],如此類推,就可以推出所有

推導(dǎo)

為什么可知perm[0]=x ^ encoded[1] ^ encoded[3]…?
因?yàn)閑ncoded[1] = perm[1] XOR perm[2] ,encoded[3] = perm[3] XOR perm[4]…
因此可得encoded[1] ^ encoded[3]…= perm[1]^ perm[2]^ perm[3]^ perm[4]…

又因?yàn)閜erm是前 n 個(gè)正整數(shù)的排列,所以
perm[0]perm[1] perm[2]^ perm[3]^ perm[4]…=1 ^ 2 ^ 3 ^ …^n=x

因此可得perm[0]=x ^ encoded[1] ^ encoded[3]…

代碼

func decode(encoded []int) []int {n:=len(encoded)+1odd:=0for i := 1; i < len(encoded) ; i+=2 {odd^=encoded[i]}all:=0for i := 1; i <=n ; i++ {all^=i}pre:=all^oddres := make([]int, n)res[0]=prefor j, code := range encoded {cur:=pre^coderes[j+1]=curpre=cur}return res }

總結(jié)

以上是生活随笔為你收集整理的leetcode 1734. 解码异或后的排列(位运算)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。