持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
前言
小白算法比较菜,希望能激励我每日更新,从leetcode第一题开始,2022年目标300题,记录从0到1的全过程!!
力扣第 88 场双周赛
力扣第 88 场双周赛-力扣
a了三题,2000以内,小上10几分。第一题太离谱了,写O(n)的算法wa了太多次,应该直接暴力的,,,,
这里放一下312的排名,也是wa了8次
2425. 所有数对的异或和
给你两个下标从 0 开始的数组 nums1 和 nums2 ,两个数组都只包含非负整数。请你求出另外一个数组 nums3 ,包含 nums1 和 nums2 中 所有数对 的异或和(nums1 中每个整数都跟 nums2 中每个整数 恰好 匹配一次)。
请你返回 nums3 中所有整数的 异或和 。
示例 1
- 输入:nums1 = [2,1,3], nums2 = [10,2,5,0]
- 输出:13
- 解释:
- 一个可能的 nums3 数组是 [8,0,7,2,11,3,4,1,9,1,6,3] 。
- 所有这些数字的异或和是 13 ,所以我们返回 13 。
示例 2
- 输入:nums1 = [1,2], nums2 = [3,4]
- 输出:0
- 解释:
- 所有数对异或和的结果分别为 nums1[0] ^ nums2[0] ,nums1[0] ^ nums2[1] ,nums1[1] ^ nums2[0] 和 nums1[1] ^ nums2[1] 。
- 所以,一个可能的 nums3 数组是 [2,5,1,6] 。
- 2 ^ 5 ^ 1 ^ 6 = 0 ,所以我们返回 0 。
提示
1 <= nums1.length, nums2.length <= 1050 <= nums1[i], nums2[j] <= 109
代码
这个题啊,并没有什么难度,大家要搞清楚亦或运算的计算逻辑。
a^a = 0 a^b^a = a ^ a ^ b = b
如果有n个a亦或,n为偶数的时候答案为0,n为奇数的时候答案为a
- 所以,对于nums1的每个元素来说,他出现了nums2.length次.
- 对于nums2的每个元素来说,他出现了nums1.length次.
所以,代码如下
class Solution {
public int xorAllNums(int[] nums1, int[] nums2) {
int a = nums1.length % 2;
int b = nums2.length % 2;
int res = 0;
if (b == 1) {
for (int i = 0; i < nums1.length; i++) {
res ^= nums1[i];
}
}
if(a == 1){
for (int i = 0; i < nums2.length; i++) {
res ^= nums2[i];
}
}
return res;
}
}
这个第三题其实算是比较简单的了,基本思路想好了,就没什么问题了。其实对位运算本来就有种莫名的畏惧感,特别是亦或是更不好想的,更畏惧了。。。
第一、二题连接如下-力扣第 88 场双周赛-第一、二题
力扣第 88 场双周赛-第一、二题
3.结束
第四题还是无从下手,我什么时候能成为四题选手啊!!!!gogogo,刷题刷题,每天一道,三年1000道!!!!