#leetcode刷题之路41-缺失的第一个正数
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。
示例 1:
输入: [1,2,0]
输出: 3
示例 2:
输入: [3,4,-1,1]
输出: 2
示例 3:
输入: [7,8,9,11,12]
输出: 1
说明:
你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。
方法1:这个的话时空复杂度太大,不符合要求的
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std; int firstMissingPositive(vector<int>& nums) {
int ans=;
sort(nums.begin(),nums.end());
for(int i=;i<nums.size();i++)
{
if(nums[i]<) continue;
if(nums[i]==ans) ans++;
}
return ans;
} int main() {
std::cout << "Hello, World!" << std::endl;
return ;
}
方法1:改进的方式为,遍历一次数组把大于等于1的和小于数组大小的值放到原数组对应位置,然后再遍历一次数组查当前下标是否和值对应,如果不对应那这个下标就是答案,否则遍历完都没出现那么答案就是数组长度加1。
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std; //int firstMissingPositive(vector<int>& nums) {
// int ans=1;
// sort(nums.begin(),nums.end());
// for(int i=0;i<nums.size();i++)
// {
// if(nums[i]<1) continue;
// if(nums[i]==ans) ans++;
// }
// return ans;
//} int firstMissingPositive(vector<int>& nums)
{
for(int i = ; i < nums.size();i++)
{
if (nums[i] >= && nums[i] <= nums.size() && nums[nums[i] - ] != nums[i])
{
int temp = nums[i];
nums[i] = nums[temp - ];
nums[temp - ] = temp;
if (i != nums.size() - ) i--;
}
}
for(int i = ; i < nums.size(); i++)
{
if(nums[i] != i + )
{
return i + ;
}
}
return nums.size() + ;
} int main() {
vector<int> nums={,,-,};
int ans=firstMissingPositive(nums);
std::cout << ans << std::endl;
return ;
}
#leetcode刷题之路41-缺失的第一个正数的更多相关文章
- Java实现 LeetCode 41 缺失的第一个正数
41. 缺失的第一个正数 给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: ...
- Leetcode 41.缺失的第一个正数
缺失的第一个正数 给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: ...
- python -- leetcode 刷题之路
第一题 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], tar ...
- 使用Java+Kotlin双语言的LeetCode刷题之路(三)
BasedLeetCode LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 ...
- 使用Java+Kotlin双语言的LeetCode刷题之路(二)
BasedLeetCode LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 ...
- 使用Java+Kotlin双语言的LeetCode刷题之路(一)
LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 1 两数之和 给定一个整数数 ...
- #leetcode刷题之路40-组合总和 II
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合.candidates 中的每个数字在每个组合中只能使用一次.说 ...
- #leetcode刷题之路16-最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 例如,给定数 ...
- #leetcode刷题之路13-罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M.字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 写 ...
随机推荐
- linux 查看在线服务进程
输入命令:netstat -ltunp 注意,这个-与l之间是没有空格的 要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程, 而ps命令(Process Status)就 ...
- QT开发(一)Vs2013集成 QT5.3.1
原文:http://www.cnblogs.com/aoldman/p/3860837.html 很久不写随笔了,真是越来越懒.最近公司要做一款产品,想使用QT不用WPF lol,让苦逼的.net的我 ...
- Week3——Session
Session 一.Session是会话技术的一种.会话技术分为Cookie和Session.Cookie是数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端可以清除cookie: S ...
- AspNetCore发布到Centos7
1.Centos安装netcore2 sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'e ...
- Ionic开发项目
hybrid app是移动开发代替原生开发完成app应用项目的一种方案,Ionic是hybrid app开发的一种选择.对ionic有兴趣可以去网上找相应的基础知识来学习了解,因为Ionic是基于An ...
- BufferedInputStream使用详解
下面的例子演示如何使用BufferedInputStream类读取文本文件内容. 首先需要声明一个byte数组作为buffer,然后循环将文本内容循环读入到buffer中,并将buffer转换为字符串 ...
- javascript进行百度换肤 和显示隐藏一个窗口的操作
简单的运用javascript来进行百度换肤的操作 <!DOCTYPE html> <html lang="en"> <head> <me ...
- C++类知识总结
c++类 1.初始化const或引用类型数据成员的唯一机会是在构造函数初始化列表中. 2.使用成员初始化列表时成员初始化的次序:第一个成员首先被初始化.然后是第二个,依次类推. 构造函数初始化列表为类 ...
- iOS模拟器命令xcrun simctl系列(自动化测试)
1. 列出安装的可用的模拟器: xcrun instruments -s [如:iPhone 5s (9.0) [00AB3BB6-C5DC-45C7-804F-6B88F57C2AFF] (Simu ...
- requirejs 多页面,多js 打包代码,requirejs多对多打包
这段代码来自 http://stackoverflow.com/questions/20583812/grunt-requirejs-optimizer-for-a-multi-app-project ...