268. 缺失数字
1 //[3,0,1] + [0,1,2,3] = [0,0,1,1,2,3,3] ——> 求异或 2 class Solution 3 { 4 public: 5 int missingNumber(vector<int>& nums) 6 { 7 int n = nums.size(); 8 int res = 0; 9 for(int i = 0;i <= n;i ++) nums.push_back(i); 10 for(int i = 0;i < nums.size();i ++) res ^= nums[i]; 11 return res; 12 } 13 };
1 //[3,0,1] + [0,1,2,3] = [0,0,1,1,2,3,3] ——> 求异或 2 class Solution 3 { 4 public: 5 int missingNumber(vector<int>& nums) 6 { 7 int n = nums.size(); 8 int res = 0; 9 res ^= n; 10 for(int i = 0;i < nums.size();i ++) res ^= (nums[i] ^ i); 11 return res; 12 } 13 };
1 //利用等差数列求和来寻找差值 2 class Solution 3 { 4 public: 5 int missingNumber(vector<int>& nums) 6 { 7 int n = nums.size(); 8 // 公式:(首项 + 末项) * 项数 / 2 9 int expect = (0 + n) * (n + 1) / 2; 10 11 int sum = 0; 12 for (int x : nums) sum += x; 13 return expect - sum; 14 } 15 };
1 //利用等差数列求和来寻找差值 2 class Solution 3 { 4 public: 5 int missingNumber(vector<int>& nums) 6 { 7 int n = nums.size(); 8 int res = 0; 9 10 // 索引和元素的差加起来 11 for (int i = 0; i < n; i++) 12 res += i - nums[i]; 13 14 // 新补的索引 15 res += n - 0; 16 return res; 17 } 18 };
Mamba never out

浙公网安备 33010602011771号