leecode 解题总结:268. Missing Number
来源:互联网 发布:打印机的端口怎么看 编辑:程序博客网 时间:2024/06/04 00:20
#include <iostream>#include <stdio.h>#include <vector>#include <string>#include <unordered_map>using namespace std;/*问题:Given an array containing n distinct numbers taken from 0, 1, 2, ..., n,find the one that is missing from the array.For example,Given nums = [0, 1, 3] return 2.Note:Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?分析:给定一个n个不同的整数数组,寻找丢失的数。数字不同,可以用位图或者统计排序来做。可以先分组,比如将每个整数取100的余后,然后进行处理。需要先寻找最大的数,时间为线性时间复杂度=O(n)。这里用哈希map来做,就不是常量的空间了。如果用哈希,判断下一个数和上一个数是否相邻即可。等差数列判定:如果有3个数,按照道理0,1,2diff(0~n)=(n+1)*n/2,,计算数组所有元素的和为sum,用(n+1)*n/2 - sum 即为丢失的数输入:30 1 330 1 21011输出:2310关键:1 给定n个元素,实际有n+1个元素,丢失了一个,实际元素是:0,1,2,3...,n,实际的和是n(n+1)/2,现在n个元素的和为sum,丢失的数=(n+1)*n/2 - sum*/class Solution {public: int missingNumber(vector<int>& nums) { if(nums.empty()){return 0;}int size = nums.size();int sum = 0;for(int i = 0 ; i < size ; i++){sum += nums.at(i);}//长度为size ,因为丢失一个数,真正长度为size + 1,但又是从0开始,需要减去1,等差数列的和为=(size-1)*size/2int result = (size + 1) * size / 2;int missNumber = result - sum;return missNumber; }};void print(vector<int>& result){if(result.empty()){cout << "no result" << endl;return;}int size = result.size();for(int i = 0 ; i < size ; i++){cout << result.at(i) << " " ;}cout << endl;}void process(){ vector<int> nums; int value; int num; Solution solution; vector<int> result; while(cin >> num ) { nums.clear(); for(int i = 0 ; i < num ; i++) { cin >> value; nums.push_back(value); } int answer = solution.missingNumber(nums); cout << answer << endl; }}int main(int argc , char* argv[]){process();getchar();return 0;}
0 0
- leecode 解题总结:268. Missing Number
- leecode 268. Missing Number
- leecode 解题总结:41. First Missing Positive
- leecode 解题总结:260. Single Number III
- leecode 解题总结:263. Ugly Number
- leecode 解题总结:264. Ugly Number II
- leecode 解题总结:313. Super Ugly Number
- leecode 解题总结:17. Letter Combinations of a Phone Number
- leecode 解题总结:374. Guess Number Higher or Lower
- [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 解题报告
- Missing Number解题报告
- LeetCode268. Missing Number解题
- 使用Visual Studio Code + Node.js搭建TypeScript开发环境
- 如何实现基于http的json格式接口
- 洛谷2023 [AHOI2009]维护序列 线段树+双lazy
- Codeforces Round #306 (Div. 2)D
- Lua与.net的CLR相互调用
- leecode 解题总结:268. Missing Number
- pat 1007. Maximum Subsequence Sum (25)
- libsvm-3.22与MATLAB2014a中svmtrian()函数冲突问题的解决
- Android Service的使用方法 音乐播放器实例
- 常见的图片上的描述
- 并查集--九度1012 & 1109 [路径压缩]
- Archlinux作为Openstreetmap服务器滚动更新
- php正则语法--分隔符
- 随手记,一些bug的调试