Longest Consecutive Sequence 数组连续数字的情况
2015-08-30 21:36
399 查看
Longest Consecutive Sequence
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
For example,
Given
The longest consecutive elements sequence is
寻找最大的连续数组的长度,利用两个set数组,一个数组存储已经被访问过的数组,如果已经被访问过了,那么就不需要再被访问了
Given an unsorted integer array, find the first missing positive integer.
For example,
Given
and
连续数组求最小的miss的数据,还是利用前面介绍的方法,还是利用两个不同的set,其中一个表示已经访问过了的情况,只观察比当前大的数据,
如果已经访问过了就不访问了
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
For example,
Given
[100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is
[1, 2, 3, 4]. Return its length:
4.
寻找最大的连续数组的长度,利用两个set数组,一个数组存储已经被访问过的数组,如果已经被访问过了,那么就不需要再被访问了
class Solution { public: int longestConsecutive(vector<int>& nums) { if(nums.empty()) { return 0; } unordered_set<int> existSet; unordered_set<int> visitedSet; int maxLength = 0; for(int i = 0; i < nums.size(); i++) existSet.insert(nums[i]); for(int i = 0; i < nums.size(); i++) { int length = 0; if(visitedSet.count(nums[i])) { continue; } else { visitedSet.insert(nums[i]); length++; int left = nums[i]; int right = nums[i]; while(existSet.count(--left)) { visitedSet.insert(left); length++; } while(existSet.count(++right))//<必须使用�前++ { visitedSet.insert(right); length++; } maxLength = max(maxLength,length); } } return maxLength; } };
First Missing Positive
Given an unsorted integer array, find the first missing positive integer.For example,
Given
[1,2,0]return
3,
and
[3,4,-1,1]return
2.
连续数组求最小的miss的数据,还是利用前面介绍的方法,还是利用两个不同的set,其中一个表示已经访问过了的情况,只观察比当前大的数据,
如果已经访问过了就不访问了
class Solution { public: int firstMissingPositive(vector<int>& nums) { if(nums.empty()) { return 1; } int missVal = INT_MAX; int minVal = 1; unordered_set<int> numSet; unordered_set<int> visitedSet; for_each(nums.begin(),nums.end(),[&numSet](int x) { if(x >= 0) numSet.insert(x); }); for(int i = 0; i < nums.size(); i++) { if(nums[i] < 0 || visitedSet.count(nums[i])) { continue; } int right = nums[i]; while(numSet.count(++right)) { visitedSet.insert(right); } missVal = min(missVal,right); } if(numSet.count(1)) return missVal; else { return 1; } } };
相关文章推荐
- 《第一行代码》读书笔记(三)----UI开发(下)
- easyUI comboTree的实现
- Ajax之X-Requested-With请求头
- AlertDialog.Builder用法
- 北京传智播客网页UI设计学院
- [c#美味] Guid ToString 格式知多少?
- UI Design
- 野人学Android基础篇之初探UI控件第六课--ListView和他的adapter们(三)
- CSS3媒体查询 Media Queries 简介
- Xcode 7 UI testing
- “全排列”问题系列(一)[LeetCode] - 用交换元素法生成全排列及其应用,例题: Permutations I 和 II, N-Queens I 和 II,数独问题
- iOS学习总结之UI框架UI之文本输入控件( UITextField)
- A Gentle Guide to Machine Learning
- iOS_UI_1_UIView
- UVA 1252 十五 Twenty Questions
- iOS学习总结之UI框架UIWindow和UIView(附带计时器学习)
- UVA 11404 五 Palindromic Subsequence
- UVA 10534 三 Wavio Sequence
- Errors running builder 'DeploymentBuilder' on project '工程名' xxxNullpointException 错误解决方案
- iOS学习总结之UI图层关系与center