首頁>技術>

題目

有一個正整數陣列 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題目,異或問題,藉助字首和+異或,來求結果

12
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • leetcode1262_go_可被三整除的最大和