作者JerryChungYC (JerryChung)
標題Re: [閒聊] 每日leetcode
時間2024-09-13 10:08:48
https://leetcode.com/problems/xor-queries-of-a-subarray
※ 引述《enmeitiryous (enmeitiryous)》之銘言:
: 題目: XOR Queries of a Subarray
: 給你一個整數vector:arr,並給你一個2D vector: queries,你需要回傳一個整數vector
: ans,其中ans[i]代表為arr從quieries[i][0]的位置一路xor到queries[i][1]的位置的值
: ,若queries[i]的兩個值相等是回傳arr[queries[i][0]]。
: 思路:
: 我們可以先做一個prefix xor的vector,其中prefix_xor[i]代表arr[0]一路xor到arr[i]
: 的值,任意的[i to j]的xor值(i!=0)就是prefix_xor[j] xor prefix_xor[i-1]
思路:看大師的思路
Python Code:
class Solution:
def xorQueries(self,arr:List[int],queries:List[List[int]]) -> List[int]:
prefix_arr = {0: arr[0]}
for i in range(1, len(arr)):
prefix_arr[i] = prefix_arr[i-1] ^ arr[i]
return [
prefix_arr[q[1]] ^ (prefix_arr[q[0]-1] if q[0] != 0 else 0)
for q in queries
]
原本用 eval 想當然耳遇到 TLE 了
不過為啥
[eval(' ^ '.join(f'arr[{n}]' for n in range(q[0], q[1]+1))) for q in queries]
在電腦可以 提交卻失敗了 是 Python 版本問題嗎
電腦是 3.12.4 網站是 3.11.10
--
※ 發信站: 批踢踢實業坊(web-ptt.tw), 來自: 60.251.52.67 (臺灣)
※ 文章網址: https://web-ptt.tw/Marginalman/M.1726193331.A.33B