Leetcode 268. 缺失数字 解题思路及C++实现
生活随笔
收集整理的這篇文章主要介紹了
Leetcode 268. 缺失数字 解题思路及C++实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
方法一:利用求和公式 1+2+...+n = n*(n+1)/2
解題思路:
利用求和公式 1+2+...+n = n*(n+1)/2,首先求出nums的size,就知道這n個數的和了,然后遍歷數組nums,逐個減掉,得到的結果就是沒有出現的數。
?
class Solution { public:int missingNumber(vector<int>& nums) {int n = nums.size();long res = n * (n + 1) / 2;for(auto num: nums){res = res - num;}return res;} };?
方法二:XOR
解題思路:
因為a ^ a = 0,所以,對于數組nums中的數,將所有數遍歷一次,一一進行異或,再和0,1,2,...,n進行異或,由于缺失了的數字只進行了一次異或,所以異或后的結果就是缺失的數字。
class Solution { public:int missingNumber(vector<int>& nums) {int res = nums.size();for(int i = 0; i < nums.size(); i++){res = res ^ i;res = res ^ nums[i];}return res;} };?
?
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Leetcode 268. 缺失数字 解题思路及C++实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode 231. 2的幂 解题
- 下一篇: Leetcode 137. 只出现一次的