标签:tps sub object 参考 技巧 etc 转换 元素 pull
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.
For example:
Given nums = [1, 2, 1, 3, 2, 5]
, return [3, 5]
.
Note:
[5, 3]
is also correct.
上两个的升级版,但是跟上两个思路又完全不同。真是。。。
两种做法,一个位运算肯定是技巧性很高的,一个是set维护。
遍历这个数组,第一次出现的添加进去,只要出现了第二次,则remove,剩下的就是单个了的数集合了,也适用用于找出数组中成对出现数中的所有单个数。最后把这个set集合元素添到数组就行了。
查了资料,貌似不能直接把一个set集合转换成Array,toArray也只能装换成object,参考可见:https://ask.helplib.com/106360。
public class Solution { public int[] singleNumber(int[] nums) { Set<Integer> set = new HashSet<Integer>(); for(int n : nums) { if(!set.contains(n)) { set.add(n); }else { set.remove(n); } } int[] ans = new int[set.size()]; int cnt = 0; for(int n:set) { ans[cnt++] = n; } return ans; } }
标签:tps sub object 参考 技巧 etc 转换 元素 pull
原文地址:http://www.cnblogs.com/zhangmingzhao/p/7282441.html