260. Single Number III
Posted wentiliangkaihua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了260. Single Number III相关的知识,希望对你有一定的参考价值。
Given an array of numbers nums
, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.
Example:
Input:[1,2,1,3,2,5]
Output:[3,5]
Note:
- The order of the result is not important. So in the above example,
[5, 3]
is also correct. - Your algorithm should run in linear runtime complexity. Could you implement it using only constant space complexity?
class Solution { public int[] singleNumber(int[] nums) { List<Integer> list = singleNumber1(nums); int[] res = new int[list.size()]; for(int i = 0; i < list.size(); i++){ res[i] = list.get(i); } return res; } public List<Integer> singleNumber1(int[] nums) { List<Integer> list = new ArrayList(); Map<Integer, Integer> map = new HashMap(); for(int i : nums){ int value = map.getOrDefault(i, 0); map.put(i, value + 1); } for(Map.Entry<Integer, Integer> entry : map.entrySet()){ if(entry.getValue() == 1) list.add(entry.getKey()); } return list; } }
调用1中map方法,屡试不爽
class Solution { public int[] singleNumber(int[] nums) { if(nums == null || nums.length == 0) return new int[0]; Map<Integer, Integer> map = new HashMap<>(); for(int i = 0; i < nums.length; i++) { if(!map.containsKey(nums[i])) { map.put(nums[i], 1); }else{ map.remove(nums[i]); } } int[] output = new int[2]; int n = 0; for(int i : map.keySet()) { output[n++] = i; } return output; } }
或者稍微优化一下。
以上是关于260. Single Number III的主要内容,如果未能解决你的问题,请参考以下文章