LeetCode:136, Single Number(找出單個數字)
阿新 • • 發佈:2018-12-16
Given a non-empty array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Example 1:
Input: [2,2,1] Output: 1
Example 2:
Input: [4,1,2,1,2] Output: 4
解題方法1:
private int getSingleNumer2(int[] nums) { Set<Integer> set = new HashSet<>(); for (int ele : nums) { if (set.contains(ele)) { set.remove(ele); } else { set.add(ele); } } return (int)set.toArray()[0]; }
利用set集合進行處理;
時間複雜度:O(n);
空間複雜度: O(n);
解題方法2:
private int getSingleNumer4(int[] nums) {
int singleNumber = nums[0];
for (int i=1;i<nums.length;i++) {
singleNumber ^=nums[i];
}
return singleNumber;
}
利用異或進行處理;
時間複雜度:O(n);
空間複雜度:O(1);