Saturday, February 17, 2018

82. Single Number

「找单数」系列题,技巧性较强,需要灵活运用位运算的特性。根据题意,共有2*n + 1个数,且有且仅有一个数落单,要找出相应的「单数」。鉴于有空间复杂度的要求,不可能使用另外一个数组来保存每个数出现的次数,考虑到异或运算的特性,根据x ^ x = 0和x ^ 0 = x可将给定数组的所有数依次异或,最后保留的即为结果。 public class Solution { public int singleNumber(int[] nums) { if (nums == null || nums.length == 0) return -1; int result = 0; for (int num : nums) { result ^= num; } return result; } }

No comments:

Post a Comment

4. Ugly Number

1*2(t2) 2*2 3*2 (t3)1*3 2*3 3*3 (t5)1*5 2*5 3*5 1*2 2*2(t2) 3*2 1*3(t3) 2*3 3*3 (t5)1*5 2*5 3*5 Solution: public int nthUglyNumbe...