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 ...
随机推荐
- show status和show variables区别解析
1.show status 查看系统运行的实时状态,便于dba查看mysql当前运行的状态,做出相应优化,动态的,不可认为修改,只能系统自动update. MariaDB [(none)]> ...
- oracle常用命令大全及心得
学习时整理的 Oracle 1.set linesize 100; 设置长度2.set pagesize 30; 设置每页显示数目3.em a.sql 打开记事本 4.@ a 执行文件a中的代码,可指 ...
- 网络编程——URL编程
URL:是统一资源定位器的简称,它表示Internet某一资源的地址.通过URL我们可以访问Internet上的各种网络资源,比如最常见的www,ftp站点.浏览器通过解析给定的URL可以在网络上查找 ...
- Tomasulo's Algorithm
如果操作数在寄存器中,将会存在V字段,否则,设置Q字段来指示reservation station将会产生运算所需要的操作数 reorder buffer包含4个字段 the instruction ...
- 编码UTF-8
☯,首先,这并不是图片,这是一个unicode字符,Yin Yang,即阴阳符,码点为U+262F.如果你的浏览器无法显示,可以查看这个链接http://www.fileformat.info/inf ...
- PagedDataSource、Repeater以及AspNetPager在ASP.NET上分页。
一.前台使用服务器标签 1.1使用Repeater控件 <asp:Repeater ID="Repeater1" runat="server"> & ...
- 解决程序出现“terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Aborted (core dumped)”的问题
最近跑程序时出现了这么一个问题: terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_al ...
- Java8 新特性 Lambda学习
import java.util.ArrayList;import java.util.Collections;import java.util.IntSummaryStatistics;import ...
- JavaScrip之对象与继承
这章主要学习对象.原型.原型链和继承,比较核心,所以单独整理这一章的内容. 理解对象:一组名值对,值可以是数据或函数. 属性类型:1数据属性:包含一个数据值的位置.在这个位置可以读取和写入值,4个描述 ...
- new(C# 参考)
在 C# 中,new 关键字可用作运算符.修饰符或约束. new 运算符 用于创建对象和调用构造函数. new 修饰符 用于隐藏基类中被继承的成员. new 约束 用于在泛型声明中约束可能用作类型参数 ...