省建设厅官方网站,百度广告点击一次多少钱,长春百度关键词推广,怎么把网站模板上传到自己的网站一、题目 给你一个 非空 整数数组 nums #xff0c;除了某个元素只出现一次以外#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题#xff0c;且该算法只使用常量额外空间。 示例 1 #xff1a;
输入除了某个元素只出现一次以外其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题且该算法只使用常量额外空间。 示例 1
输入nums [2,2,1]
输出1示例 2
输入nums [4,1,2,1,2]
输出4示例 3
输入nums [1]
输出1提示
1 nums.length 3 * 104-3 * 104 nums[i] 3 * 104除了某个元素只出现一次以外其余每个元素均出现两次。 二、思路解析 这道题用到的是异或的运算方法。我们先来看下罗根手绘的有关异或的两大性质
了解完这些性质后我们可以通过创建一个变量 count 并让他的初值为 0 然后让他遍历整个数组与数组每个元素进行异或操作。 这里可以先看上边的性质三来理解第一次出现过的数通过交换律可以被消掉变成 0 而 0 与任何数异或都为这个数。
因此我们最后再返回 count 即可 三、完整代码 class Solution {public int singleNumber(int[] nums) {int count 0;for(int i: nums){count ^i;}return count;}
} 以上就是本篇博客的全部内容啦如有不足之处还请各位指出期待能和各位一起进步