- 题目:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
- 思路:
方法一:将数组排序,依次遍历数组如果当前元素既不等于前一个元素也不等于后一个元素即返回结果。 方法二:通过依次异或每个元素,得到最后的值,即出现过依次的值,即结果。一个数异或两个相同的数,结果是其本身。
- 代码(Java)
/** * 方法一 */ public static int singleNumber(int[] nums) { if (nums.length == 1) { return nums[0]; } Arrays.sort(nums); if (nums[0] != nums[1]) { return nums[0]; } if (nums[nums.length - 2] != nums[nums.length - 1]) { return nums[nums.length - 1]; } for (int i = 1; i < nums.length - 1; i++) { if (nums[i] != nums[i - 1] && nums[i] != nums[i + 1]) { return nums[i]; } } return -1; }
/** * 方法二 */ public static int singleNumber2(int[] nums) { if (nums.length == 1) { return nums[0]; } int result = 0; for (int i : nums) { result ^= i; } return result; }
LeetCode第136题:只出现一次的数字
于 2021-02-25 21:04:36 首次发布