lintcode刷题——丢失的第一个正整数
来源:互联网 发布:移动4g卡首选网络类型 编辑:程序博客网 时间:2024/06/09 17:45
原题如下:
丢失的第一个正整数
给出一个无序的正数数组,找出其中没有出现的最小正整数。
如果给出 [1,2,0]
, return 3
如果给出 [3,4,-1,1]
, return 2
1、这题并不难,主要是要考虑到多种不同的情况,题目给出的数组应该是可以有重复数字并且有正有负的;
2、最小的正整数,将数组中的数放入一个与输入数组等大的数组中,排序,如果最小的数是小于等于1的,最小正整数应该在数组中间或者大于数组最大的数,这时候只要考虑每一个数和前一个数相差的是不是大于1即可,注意,还要保证前一个数是大于0的;
3、如果最小的数大于1,那么结果就为1.
具体的C++代码如下:
class Solution {
public:
/*
* @param A: An array of integers
* @return: An integer
*/
int firstMissingPositive(vector<int> &A) {
// write your code here
// write your code here
if (A.size() == 0)
return 1;
if (A.size() == 1)
{
if (A[0] <= 0)
return 1;
else
{
return A[0] + 1;
}
}
int len = A.size();
sort(A.begin(), A.end());
int max = A[len - 1];
vector<int> m(len,0);
for (int i = 0; i < len;i++)
{
m[i] = A[i];
}
if (m[0] <= 1)
{
for (int i = 1; i < len; i++)
{
if ((m[i] - m[i - 1] >1) && m[i - 1]>0)
{
return m[i - 1] + 1;
}
}
return m[len - 1] + 1;
}
else
{
return 1;
}
}
};
- lintcode刷题——丢失的第一个正整数
- 丢失的第一个正整数——LintCode
- LintCode-丢失的第一个正整数
- LintCode 丢失的第一个正整数
- LintCode:丢失的第一个正整数
- LintCode 189-丢失的第一个正整数
- lintcode(189)丢失的第一个正整数
- lintcode -- 丢失的第一个正整数
- Lintcode 丢失的第一个正整数
- 丢失的第一个正整数-LintCode
- LintCode:M-丢失的第一个正整数
- *[Lintcode]First Missing Positive 丢失的第一个正整数
- 丢失的第一个正整数
- 丢失的第一个正整数
- 题目:丢失的第一个正整数
- (189)丢失的第一个正整数
- 寻找丢失的第一个正整数
- Java实现-丢失的第一个正整数
- RestTemplate的几种方法的参数
- leetcode 671. Second Minimum Node In a Binary Tree
- PHP 实现商品的无限规格实现思路
- 杂记——搜索按钮的小效果
- 安装CDH组件的时候会多产生一个分组的原因
- lintcode刷题——丢失的第一个正整数
- Java 中正确使用 hashCode 和 equals 方法
- kmp算法 java实现
- The Geometry has no Z values 解决办法
- 文章标题
- springAop 运用之权限验证
- java发送邮件(javaMail通过SMTP发送邮件)
- javascript内置对象常用属性和方法(笔记一)
- 【终极面试】线程向