JAVA练习323- 只出现一次的数字
2026/7/21 21:09:42 网站建设 项目流程

题目概览

给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

示例 1 :

输入:nums = [2,2,1]

输出:1

示例 2 :

输入:nums = [4,1,2,1,2]

输出:4

示例 3 :

输入:nums = [1]

输出:1

提示:

  • 1 <= nums.length <= 3 * 10^4
  • -3 * 10^4 <= nums[i] <= 3 * 10^4
  • 除了某个元素只出现一次以外,其余每个元素均出现两次。

来源:136. 只出现一次的数字 - 力扣(LeetCode)

解题分析

方法:位运算

异或 是 相同为 0,不同为 1,因此当两个相同数做异或运算时会返回 0,一个数和 0 做异或运算时会返回 该数 本身。因此只需要将数组中所有元素一起做异或运算,得到的值一定是只出现一次的那个数。

时间复杂度:O(n)
空间复杂度:O(1)

class Solution { public int singleNumber(int[] nums) { int res = 0; for (int num: nums) { res ^= num; } return res; } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询