leetcode打卡——268. 丢失的数字(简单题见真功夫)

Posted C_YCBX Py_YYDS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode打卡——268. 丢失的数字(简单题见真功夫)相关的知识,希望对你有一定的参考价值。

题目


OJ平台

题目解析

  1. 排序,然后判断
  2. 原地数组交换,然后判断
  3. 由于已经知道了数据范围,而且仅缺失一个元素,所以衍生出两种做法:(1 直接求数据总和,然后减去真实总和。(2 直接和对应的下标异或,很明显留下来的就是答案。
  4. 工具法:直接用哈希表存下,然后判断

解题代码

原地数组交换法

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int n = nums.size();
        int res = n;
        for(int i=0;i<n;i++){
            while(i!=n&&nums[i]!=n&&nums[i]!=i){
                swap(nums[i],nums[nums[i]]);
            }
        }
        for(int i=0;i<n;i++){
            if(i!=nums[i])
                res = i;
        }
        return res;
    }
};

根据特点异或解法

class Solution {
public:
    int missingNumber(vector<int>& nums) {
       int n = nums.size();
       int res = 0;
       for(int i=0;i<n;i++){
           //相当于实现0^0...n^0...n,但少了n所以最后再补上。
           res ^= nums[i]^i;
       }
        return res^n;
        
    }
};

以上是关于leetcode打卡——268. 丢失的数字(简单题见真功夫)的主要内容,如果未能解决你的问题,请参考以下文章

数学与数字6:LeetCode268. 丢失的数字

Leecode 268. 丢失的数字——Leecode每日一题系列

LeetCode Algorithm 268. 丢失的数字

Leetcode刷题Python268. 丢失的数字

LeetCode:268. 丢失的数字1404. 将二进制表示减到 1 的步骤数

LeetCode 268 丢失的数字[二分法 异或] HERODING的LeetCode之路