位运算解决只出现一次的数字问题

tech2026-04-21  1

问题描述:

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 不使用额外的空间,并且时间复杂度为线性。

输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4

解题答案:

答案是使用位运算。对于这道题,可使用异或运算异或运算有以下三个性质。 1.任何数和0做异或运算,结果仍然是原来的数 2.任何数和其自身做异或运算,结果是0 3.异或运算满足交换律和结合律

参考:链接:https://leetcode-cn.com/problems/single-number

代码如下:

class Alg136 { public int singleNumber(int[] nums) { int single = 0; for (int num : nums) { single ^= num; } return single; } public static void main(String[] args) { int[] array=new int[]{4,1,2,1,2}; Alg136 alg136=new Alg136(); int res = alg136.singleNumber(array); System.out.println(res); } }

 

最新回复(0)