![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode
BestSHL LHR
。。
展开
-
LeetCode560.和为k的子数组
2.不断地统计前缀和,下一步该统计的是0位置的3,sum=3。此时计算HashMap中是否包含(sum[0]-k=0)的键,发现包含,且个数为1,这一步的含义是,统计数组到sum计算的位置0为止,包含的所有子数组中和为k的个数,将(0, 1)放进HashMap中的作用是要包含前缀和为k的情况,即从0开始加到N项正好为k的情况,如果不添加(0,1)是没有统计这种情况的,可以拿上面的例子实验一下。这道题的暴力解法比较容易想到,即固定一边界去遍历另一边界,统计所有的子数组的和为k的数量,时间复杂度O(N^2)原创 2024-07-15 11:14:06 · 413 阅读 · 0 评论 -
Leetcode137.只出现一次的数字Ⅱ
方法的时间复杂度为O(n),空间复杂度为常数级,开辟了一个数组统计每一位上出现1的次数。以下方法为leetcode上的某题解,不需要开辟数组空间仍可以计算X的值。作为一个小白,与leetcode上的大牛相比差距很大,还有很长的路要走。本方法仍然不够简洁,没有必要开启数组,可以逐bit的计算X的值。本题的思路是统计int类型每一位上1出现的次数,由于除了某元素。的bit位为1的位余3为1,为0的位余3为0。外,其他元素都出现了三次,故。原创 2024-07-12 16:57:24 · 186 阅读 · 0 评论 -
Leetcode260.只出现一次的数字Ⅲ
1.依然将整个数组进行异或操作,根据异或的性质:a^a=0, a^0=a,以及异或的交换律可得:整个数组的异或结果位两个只出现一次的数字的异或。2.由于两数字不等,故数组异或的结果一定不为0,故找到最低位为1的位,根据这一位为0或1将数组分成两组,出现一次的数字也会分别在这两组中。3.显然,分成的两组数组每组依然只有一个数字出现一次,其余都是两次,故在两组内部进行异或操作能分别取出两个出现一次的数字。此类题目用位运算是最方便的,但是对于刚刚接触位运算的人来说可能稍微有点难理解。代码写的有些不熟练。原创 2024-07-12 16:05:53 · 198 阅读 · 0 评论 -
Leetcode136.只出现一次的数字
1.即a^a=0, 0^a=a。2.异或操作可以改变次序。原创 2024-07-12 15:22:46 · 188 阅读 · 0 评论