[LeetCode][JavaScript]First Missing Positive
2015-08-02 11:44
591 查看
First Missing Positive
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.
https://leetcode.com/problems/first-missing-positive/
要求线性的时间复杂度,就不能排序了,常数的空间复杂度,不能用哈希表。
要找出第一个未出现的数字。
给定的数组大小为n,结果不可能超过n。
遍历数组,把小于等于n的正数放到数组中下标为n-1的位置。
这边需要递归,因为被交换的数也可能也需要放到指定的位置。
最后遍历交换过顺序的数组,如果某个位置(nums[i])的值不等于i+1,i+1就是结果。
/** * @param {number[]} nums * @return {number} */ var firstMissingPositive = function(nums) { for(var i = 0; i < nums.length; i++){ move(i); } for(i = 0; i < nums.length; i++){ if(nums[i] !== i + 1){ return i + 1; } } return nums[i - 1] ? nums[i - 1] + 1 : 1; function move(i){ var tmp; if(nums[i] > 0 && nums[i] <= nums.length && nums[nums[i] - 1] !== nums[i]){ tmp = nums[nums[i] - 1]; nums[nums[i] - 1] = nums[i]; nums[i] = tmp; move(i); } } };
相关文章推荐
- [Js]删除数组指定元素
- Json获取、解析案例演示----xml解析
- JS中申明数组的三种方法
- js中window和document对象及如何操作iframe
- JavaScript整理(2)--DOM
- JavaScript的基本语法
- JSP乱码的原因
- Protect JavaScript source code with v8 snapshot
- javascript中 addEventListener和attachEvent以及element.onclick的区别
- js的alert()使用注意
- Javascript Promises Are Awesome
- 自定义标签&JSTL标签库&EL函数
- 【PHP】php通过javascript判断不同设备分辨率来调用不同的css class
- fastjson 工具入门(转载)
- javascript的基本类型剖析:
- JavaScript整理(1)--基本语法
- [LeetCode][JavaScript]Surrounded Regions
- JSP Response Set Status
- 学习JS(3)
- JavaScript 获取当前时间戳的代码