给你一个 非空 整数数组
nums
,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
示例 1 :
输入:nums = [2,2,1] 输出:1示例 2 :
输入:nums = [4,1,2,1,2] 输出:4示例 3 :
输入:nums = [1] 输出:1
import java.util.HashMap;
import java.util.Map;/*** @program: Test* @description:* @author: gyf* @create: 2024-12-15 20:57**/
public class Test {public static void main(String[] args) {int[] nums = {2, 2, 1};System.out.println(singleNumber(nums));}/*** @param nums* @return*/public static int singleNumber(int[] nums) {Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {int key = nums[i];int cout = 1;if (!map.containsKey(key)) {map.put(key, cout);} else {int value = map.get(key);value++;map.put(key, value);}}// 遍历map 取出value值为1 的key值Integer key = null;for (Map.Entry<Integer, Integer> entry : map.entrySet()) {Integer value = entry.getValue();if (value == 1) {key = entry.getKey();}}return key;}
}