leetcode打卡——268. 丢失的数字(简单题见真功夫)
Posted C_YCBX Py_YYDS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode打卡——268. 丢失的数字(简单题见真功夫)相关的知识,希望对你有一定的参考价值。
题目
题目解析
- 排序,然后判断
- 原地数组交换,然后判断
- 由于已经知道了数据范围,而且仅缺失一个元素,所以衍生出两种做法:(1 直接求数据总和,然后减去真实总和。(2 直接和对应的下标异或,很明显留下来的就是答案。
- 工具法:直接用哈希表存下,然后判断
解题代码
原地数组交换法
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. 丢失的数字(简单题见真功夫)的主要内容,如果未能解决你的问题,请参考以下文章
Leecode 268. 丢失的数字——Leecode每日一题系列