Missing Number解题报告
来源:互联网 发布:好莱坞爱情电影知乎 编辑:程序博客网 时间:2024/06/01 09:19
https://leetcode.com/problems/missing-number/
题目描述参见链接
这道题开始我没看懂,后来发现是要找0到n中的漏掉的数字,因为0到n有n+1个数字但是数组只有n个所以肯定会漏掉一个,开始我想的是排序然后遍历或者二分查找,但是排序时间复杂度就高了。所以我看了别人的做法,现在有三种思路:
第一种是求和,差值就是漏掉的那个:
class Solution {public: int missingNumber(vector<int>& nums) { int sum=0; int n=nums.size(); for(int i=0;i<nums.size();i++){ sum+=nums[i]; } return n*(n+1)*0.5-sum; }};第二种是按位异或,因为相同的数字都异或成0了,剩下的就是那个缺少的数字了:
class Solution {public: int missingNumber(vector<int>& nums) { int res = 0; for (int i = 0; i < nums.size(); ++i) { res ^= (i + 1) ^ nums[i]; } return res; }};还有一种就是二分查找,这个时间复杂度虽然高,但是当数组是排序的以后效率会高很多:
class Solution {public: int missingNumber(vector<int>& nums) { sort(nums.begin(), nums.end()); int left = 0, right = nums.size(); while (left < right) { int mid = left + (right - left) / 2; if (nums[mid] > mid) right = mid; else left = mid + 1; } return right; }};
0 0
- Missing Number解题报告
- LeetCode-Missing Number-解题报告
- 【LeetCode】Missing Number 解题报告
- [leetcode] 268. Missing Number 解题报告
- LeetCode 268. Missing Number 解题报告
- leetcode 268. Missing Number 解题报告
- Leetcode解题报告:268. Missing Number
- LeetCode 268. Missing Number 解题报告
- 【LeetCode】268.Missing Number解题报告
- [Leetcode] 268. Missing Number 解题报告
- LeetCode268. Missing Number解题
- Majority Number 解题报告
- Friend Number ZOJ 解题报告
- POJ1423 Big Number解题报告
- HDU1212 Big Number 解题报告
- [LeetCode]Palindrome Number,解题报告
- LeetCode 解题报告 Single Number
- 【LeetCode】Largest Number 解题报告
- Linux系统文件系统详解
- mosquitto源码分析(六)
- 第三周项目而二--建设“顺序表”算法库
- 替换空格
- Java系列笔记(3) - Java 内存区域和GC机制
- Missing Number解题报告
- 网口扫盲三:以太网芯片MAC和PHY的关系
- 学习笔记1—CSS盒模型
- JS中string方法中常用方法之一:String.prototype.charAt()
- Ajax的url与form表单的Action冲突问题
- Git-源码管理工具
- 竞争网络
- 指针2
- 不使用库函数strcat(),自行编程实现str_append()功能