LeetCode 41. First Missing Positive
来源:互联网 发布:php study教程 编辑:程序博客网 时间:2024/05/21 21:49
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
.
Your algorithm should run in O(n) time and uses constant space.
The simple idea is to use array's index to sort, placing the number to the correspond index slot.
My mistake solution is made because I think there is no duplicates. So, I made: nums[i] != (i + 1);
for i from 0 to size
if nums[i] != nums[nums[i] - 1] --> need swap.
I first made a mistake:
#include <vector>#include <iostream>using namespace std;// This code can't pass the following test case[1, 1] int firstMissingPositive(vector<int>& nums) { if(nums.size() == 0) return 0; int i = 0; while(i < nums.size()) { if(nums[i] > 0 && nums[i] <= nums.size() && nums[i] != (i + 1)) // here i + 1 is wrong! This will end into infinite loop swap(nums[nums[i] - 1], nums[i]); else i++; } for(i = 0; i < nums.size(); ++i) { if(nums[i] != (i + 1)) return i + 1; } return i + 1;}int main(void) { vector<int> nums{1, 1}; int missing = firstMissingPositive(nums); cout << missing << endl;}
Correct Solution.
#include <vector>#include <iostream>using namespace std;int firstMissingPositive(vector<int>& nums) { if(nums.size() == 0) return 0; int i = 0; while(i < nums.size()) { if(nums[i] > 0 && nums[i] <= nums.size() && nums[i] != nums[nums[i] - 1]) swap(nums[nums[i] - 1], nums[i]); else i++; } for(i = 0; i < nums.size(); ++i) { if(nums[i] != (i + 1)) return i + 1; } return i + 1;}int main(void) { vector<int> nums{1, 1}; int missing = firstMissingPositive(nums); cout << missing << endl;}
0 0
- [LeetCode]41.First Missing Positive
- LeetCode --- 41. First Missing Positive
- LeetCode 41.First Missing Positive
- [Leetcode] 41. First Missing Positive
- [leetcode] 41.First Missing Positive
- leetCode 41. First Missing Positive
- LeetCode 41. First Missing Positive
- leetcode 41. First Missing Positive
- Leetcode 41. First Missing Positive
- LeetCode 41. First Missing Positive
- [leetcode]41. First Missing Positive
- LeetCode-41.First Missing Positive
- leetcode 41. First Missing Positive
- [LeetCode] 41. First Missing Positive
- [LeetCode]--41. First Missing Positive
- leetcode 41. First Missing Positive
- leetcode 41.First Missing Positive
- leetcode 41. First Missing Positive
- Context详解
- javaweb基于内容的图片搜索引擎(5)_问题的分析与后话
- Python双下划线引发的学习-类变量、实例变量
- HashMap Hashtable区别
- SQL(1) -- 基本知识点及注意事项
- LeetCode 41. First Missing Positive
- java学习笔记之多态性
- 关于collection使用的一个总结
- Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
- 工作中经常使用的Linux命令
- 100万并发连接服务器笔记之Java Netty处理1M连接会怎么样
- 知识从来就不是一个人的
- JAVA程序员养成计划之JVM学习笔记(1)-运行时数据区
- Activity的启动模式与标志位