268. 缺失数字

    xiaoxiao2023-11-03  131

    题目描述:

    给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。

    示例 1:

    输入: [3,0,1] 输出: 2

    示例 2:

    输入: [9,6,4,2,3,5,7,0,1] 输出: 8

    说明: 你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?

    算法1

    使用等差数列

    class Solution { public: int missingNumber(vector<int>& nums) { int cnt = (nums.size()+1)*nums.size()/2; for(int i=0; i<nums.size(); i++) { cnt -= nums[i]; } return cnt; } };

     

    一行代码

    class Solution { public: int missingNumber(vector<int>& nums) { return nums.size()*(nums.size()+1) / 2 - accumulate(nums.begin(), nums.end(), 0); } };

     

     算法2:

    使用位运算:异或

    class Solution { public: int missingNumber(vector<int>& nums) { int res=nums.size(); for(int i=0;i<nums.size();i++) { res^=nums[i]; res^=i; } return res; } };

     

    最新回复(0)