只出现一次的数字(力扣)
题目描述
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
题目链接
力扣(LeetCode) https://leetcode-cn.com/leetbook/read/top-interview-questions/xm0u83/
题目解析
- 只有一个数据出现一次,其余数据出现两次, 所以可以使用 ^
- ^
- 相同为0
- 不同为1
package com.wy;
import java.util.Scanner;
/**
* @author HelloWorld
* @create 2021-04-13-9:10
* @email 154803771@qq.com
*/
public class Test0 {
/**
* 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
* @param args
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] array = new int[]{1, 3, 2, 2, 4, 3, 4};
System.out.println(singleNumber(array));
}
public static int singleNumber(int[] nums) {
for (int i = 1; i < nums.length; i++) {
nums[0] ^= nums[i];
}
return nums[0];
}
}