Re: [閒聊] 每日LeetCode已回收

看板Marginalman作者 (溢傷了喇)時間2年前 (2023/11/01 14:49), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串476/719 (看更多)
※ 引述《wwndbk (snoopy養的狗)》之銘言: : https://leetcode.com/problems/find-the-original-array-of-prefix-xor/ : 2433. Find The Original Array of Prefix Xor : 給你一個陣列 pref, : 要求出前面arr[0]到arr[n-1]的xor再xor哪個數可以變成pref[n] : Input: pref = [5,2,0,3,1] : Output: [5,7,2,3,2] : Explanation: From the array [5,7,2,3,2] we have the following: : - pref[0] = 5. : - pref[1] = 5 ^ 7 = 2. : - pref[2] = 5 ^ 7 ^ 2 = 0. : - pref[3] = 5 ^ 7 ^ 2 ^ 3 = 3. : - pref[4] = 5 ^ 7 ^ 2 ^ 3 ^ 2 = 1. : 思路: : arr[0]到arr[n-1]的xor就是 pref[n-1], : 已知 pref[n-1] ^ arr[n] = pref[n] , : 交換過後可以知道arr[n] = pref[n-1] ^ pref[n] 幾乎同思路,不過要推導一下才發現 補上Python跟C++ ========== Python class Solution: def findArray(self, pref: List[int]) -> List[int]: ret = [0]*len(pref) ret[0] = pref[0] for i in range(1, len(pref)): ret[i] = pref[i] ^ pref[i-1] return ret ========== C++ class Solution { public: vector<int> findArray(vector<int>& pref) { vector<int> ret(pref.size(), 0); for (int i = 0; i < pref.size(); ++i) { if (i == 0) ret[i] = pref[i]; else { ret[i] = pref[i]^pref[i-1]; } } return ret; } }; ========== 翹了好幾天,晚點補XDD -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.209.225 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1698821384.A.A48.html
文章代碼(AID): #1bGVK8f8 (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1bGVK8f8 (Marginalman)