码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode1310

时间:2020-01-11 20:48:34      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:return   class   col   异或运算   pen   app   位置   etc   思想   

 1 class Solution:
 2     def xorQueries(self, arr: List[int], queries: List[List[int]]) -> List[int]:
 3         n = len(arr)
 4         prefixsum = [arr[0]] * n
 5         res = []
 6         for i in range(1,n):
 7             prefixsum[i] = prefixsum[i-1] ^ arr[i]
 8 
 9         m = len(queries)
10         for i in range(m):
11             begin = queries[i][0]
12             end = queries[i][1]
13             if begin == 0:
14                 cur = prefixsum[end]
15             else:
16                 cur = prefixsum[end] ^ prefixsum[begin-1]
17             res.append(cur)
18         return res

算法思想:位运算。根据异或运算的性质有:x ^ x = 0,而x ^ 0 = x。

先生成前序异或数组prefixsum。

对于闭区间[begin,end],只需要使用prefixsum对应的边界位置进行异或即可。

如果begin==0,计算结果就是prefixsum[end];

如果begin > 0,计算激活就是prefixsum[end] - prefixsum[begin-1]。

leetcode1310

标签:return   class   col   异或运算   pen   app   位置   etc   思想   

原文地址:https://www.cnblogs.com/asenyang/p/12180819.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!