題目
有一個正整數陣列 arr,現給你一個對應的查詢陣列 queries,其中 queries[i] = [Li, Ri]。
對於每個查詢 i,請你計算從 Li 到 Ri 的 XOR 值
(即 arr[Li] xor arr[Li+1] xor ... xor arr[Ri])作為本次查詢的結果。
並返回一個包含給定查詢 queries 所有結果的陣列。
示例 1:輸入:arr = [1,3,4,8], queries = [[0,1],[1,2],[0,3],[3,3]] 輸出:[2,7,14,8]
解釋:陣列中元素的二進位制表示形式是:
1 = 0001
3 = 0011
4 = 0100
8 = 1000
查詢的 XOR 值為:
[0,1] = 1 xor 3 = 2
[1,2] = 3 xor 4 = 7
[0,3] = 1 xor 3 xor 4 xor 8 = 14
[3,3] = 8
示例 2:輸入:arr = [4,8,2,10], queries = [[2,3],[1,3],[0,0],[0,3]] 輸出:[8,0,4,4]
提示:1 <= arr.length <= 3 * 10^4
1 <= arr[i] <= 10^9
1 <= queries.length <= 3 * 10^4
queries[i].length == 2
0 <= queries[i][0] <= queries[i][1] < arr.length
解題思路分析1、字首異或和;時間複雜度O(n),空間複雜度O(n)
func xorQueries(arr []int, queries [][]int) []int { temp := make([]int, len(arr)+1) for i := 0; i < len(arr); i++ { temp[i+1] = temp[i] ^ arr[i] } res := make([]int, 0) for i := 0; i < len(queries); i++ { a, b := queries[i][0], queries[i][1]+1 res = append(res, temp[a]^temp[b]) } return res}
總結Medium題目,異或問題,藉助字首和+異或,來求結果
最新評論