力扣基础题:只出现一次的数字

题干

给定一个非空数组,除了某元素只出现一次,其余元素都出现两次。找出那个只出现一次的元素。(不使用额外空间、线性时间复杂第)

解法

使用位运算,两两异或,最后剩下的就是那个只出现一次的元素

位运算特点

a ^ a = 0;

a ^ 0 = a;

a ^ b ^ a = a ^ a ^ b

 

代码

 1 class Solution {
 2     public int singleNumber(int[] nums) {
 3         if(nums.length == 1){
 4             return nums[0];
 5         }
 6         int res = nums[0];
 7         for(int i = 1; i < nums.length; i ++ ){
 8             res = res ^ nums[i];
 9         }
10         return res;
11     }
12 }

 

posted @ 2022-10-07 09:54  Bravo_life  阅读(37)  评论(0)    收藏  举报