First Missing Positive && missing number
https://leetcode.com/problems/first-missing-positive/
我原以为数组中不会有重复的数字,所以利用min、max分别记录给定数组中出现的最小正整数和最大正整数{可以求出这之间的所有数值之和sum2=(min+max)*(max-min+1)/2},并且遍历给定数组,将所有正整数求和计入sum1。如果sum1>sum2则,sum1-sum2为中断数字,否则说明【min,max】连续,max+1即为所求。接着处理一些边界条件接好。但,太天真了(不过这种思路对于不含重复元素的数组仍然还是不错的思路),看看这种思路的代码实现:
class Solution {
public:
Solution():res(){
}
int firstMissingPositive(vector<int>& nums) {
if(nums.size()==)
return res;
int min=,max=;
int sum=;
for(int i=;i<nums.size();i++)
if(nums[i]>){
min=max=nums[i];
break;
}
for(int i=;i<nums.size();i++){
if(nums[i]>){
if(nums[i]<min)
min=nums[i];
if(nums[i]>max)
max=nums[i];
sum+=nums[i];
}
}
res=(max-min+)*(min+max)/-sum;
if(res==)//说明数字连续,没有中断,缺失最后一个未出来的正整数
res=max+;
if(min!=)
res=;
return res;
}
private:
int res;
};
依旧看看大神的想法:
http://www.cnblogs.com/AnnieKim/archive/2013/04/21/3034631.html
只要数组中有1这个元素,那么就会挤走数组中的第一个元素!如果有重复元素的话?(只会交换一次,后面的进行判定并忽略)
class Solution {
public:
int firstMissingPositive(vector<int>& nums) {
int i=;
while(i<nums.size()){
if(nums[i]!=i+ && nums[nums[i]-]!=nums[i] && nums[i]>= && nums[i]<=nums.size())
swap(nums[i],nums[nums[i]-]);
else
i++;
}
for(int i=;i<nums.size();i++)
if(nums[i]!=i+)
return i+;
return nums.size()+;
} };
------------------------------------------------分界线-------------------------------------另一道题--------------------------------------------------
https://leetcode.com/problems/missing-number/
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
.
自己最初的思路完全可以应用到这道题中来(3月11下午13:04 新增)
class Solution {
public:
Solution():res(){
}
int missingNumber(vector<int>& nums) {
if(nums.size()==)
return res;
int min=,max=;
int sum=;
for(int i=;i<nums.size();i++)
if(nums[i]>=){
min=max=nums[i];
break;
}
for(int i=;i<nums.size();i++){
if(nums[i]>=){
if(nums[i]<min)
min=nums[i];
if(nums[i]>max)
max=nums[i];
sum+=nums[i];
}
}
res=(max-min+)*(min+max)/-sum;
if(res==)//说明数字连续,没有中断,缺失最后一个未出来的正整数
res=max+;
if(min!=)
res=;
return res;
}
private:
int res;
};
First Missing Positive && missing number的更多相关文章
- Missing Number, First Missing Positive
268. Missing Number Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find th ...
- [LeetCode] First Missing Positive 首个缺失的正数
Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0] ...
- [LeetCode]题解(python):041-First Missing Positive
题目来源 https://leetcode.com/problems/first-missing-positive/ Given an unsorted integer array, find the ...
- [array] leetcode - 41. First Missing Positive - Hard
leetcode - 41. First Missing Positive - Hard descrition Given an unsorted integer array, find the fi ...
- LeetCode: First Missing Positive 解题报告
First Missing Positive Given an unsorted integer array, find the first missing positive integer. For ...
- [Algorithm] Find first missing positive integer
Given an array of integers, find the first missing positive integer in linear time and constant spac ...
- [LeetCode] 41. First Missing Positive 首个缺失的正数
Given an unsorted integer array, find the smallest missing positive integer. Example 1: Input: [1,2, ...
- Leetcode First Missing Positive
Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0] ...
- 【leetcode】First Missing Positive
First Missing Positive Given an unsorted integer array, find the first missing positive integer. For ...
随机推荐
- HealthKit的使用
一.项目中关联HealthKit框架 1.在Capabilities选项中打开HealthyKit选项 HealthKit关联路径 首先填写好你项目的Bundle Identifier并且选好Team ...
- 个人关于React的一些理解
##React背景 React是当前前端最火的框架,它的理念思想及构建方法比AngularJS更适合做webApp. 它是由facebook团队研发并开源到社区,所以它有很强大的技术背景,而且它的架构 ...
- mvc Razor 视图中找不到 ViewBag的定义
在Razor 视图中,我们有时会看到 ViewBag.Title 下会划一个红线,当鼠标放上去的时候会提示这样的一个错误: 找不到编译动态表达式所需的一种或多种类型,是否缺少引用? 但在项目启动运行时 ...
- C# DataTable 和List之间相互转换的方法
介绍:List/IEnumerable转换到DataTable/DataView,以及DataTable转换到List 正文: 一.List<T>/IEnumerable转换到DataTa ...
- scala 学习之:list span 用法
Pack consecutive duplicates of list elements into sublists. If a list contains repeated elements the ...
- ListView条目的侧拉删除
功能实现:类似QQ聊天记录中条目,左滑,可以删除该条目的功能:后续可以在自己的项目中添加该功能. 步骤一: (1)定义主布局,里面包含一个简单的ListView:命名id="lv" ...
- keepalived+nginx高可用负载均衡环境搭建
上篇说道keepalived的环境搭建,本来keepalived结合lvs更有优势,但是也可以结合nginx来使用.下面接着说下nginx的环境搭建 环境信息: nginx(master) 192. ...
- eclipse删除所有空行
在eclipse中删除某一行就用ctrl+D快捷键.如果你想删除一个文件中的所有空行呢. 可以用下面方法. 1.打开源码编辑器 2.使用快捷键Ctrl+f 3.在Find输入框中输入:^\ ...
- Java中四种引用:强、软、弱、虚引用
这篇文章非常棒:http://alinazh.blog.51cto.com/5459270/1276173 Java中四种引用:强.软.弱.虚引用 1.1.强引用当我们使用new 这个关键字创建对象时 ...
- DSP(2) -- 离散时间信号的序列运算
1.信号相加:这是一种对应的样本与样本之间的相加. 在Matlab中它可用算术运算符“+”实现,然后x1和x2的长度必须相等.如果序列不等,或者长度虽然相等但采样的位置不同,就不能用运算符“+”了.我 ...