CentOS安裝zip及用法
阿新 • • 發佈:2021-10-11
給定一個數組,包含從 1 到 N 所有的整數,但其中缺了兩個數字。你能在 O(N) 時間內只用 O(1) 的空間找到它們嗎?
以任意順序返回這兩個數字均可。
心之所向,素履以往 生如逆旅,一葦以航class Solution { private int lowbit(int x) { return x & (-x); } public int[] missingTwo(int[] nums) { int n = nums.length + 2; int all = 0; for (int num : nums) { all ^= num; } for (int i = 1; i <= n; ++i) { all ^= i; } int lowbit = lowbit(all); int one = 0, two = 0; for (int num : nums) { if ((num & lowbit) != 0) { one ^= num; } else { two ^= num; } } for (int i = 1; i <= n; ++i) { if ((i & lowbit) != 0) { one ^= i; } else { two ^= i; } } return new int[]{one, two}; } }