We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
给你一个没有排序的整数数组,请你找出其中没有出现的最小的正整数。
示例 1:
输入: [1,2,0] 输出: 3
示例 2:
输入: [3,4,-1,1] 输出: 2
示例 3:
输入: [7,8,9,11,12] 输出: 1
提示: 你的算法的时间复杂度为O(n) 并且只能使用常数级别的额外空间
思考: 如果这道题目没有额外的时间和空间复杂度的要求,其实比较容易实现:
方法一:
/** * @param {number[]} nums * @return {number} */ var firstMissingPositive = function(nums) { // 创建一个set 这里使用se目的和哈希表一样,优点在于并不关心数组中的重复元素 let set = new Set(); // 遍历数组, 将数组中的元素放入 set 中 nums.forEach(x => set.add(x)) // 初始化假设 1 就是缺失的第一个正整数 let res = 1; // 数组中第一个没有元素的位置 let n = nums.length; // 这里需要注意一个细节 <= 假设 数组是[1,2,3,4] 缺失的第一个 // 正数就是5,那么正好是n所在的位置 while(res <= n) { // 如果set中存放的数组元素不包含 res 说明就是缺失的 if (set.has(res) === false) { return res; } else { res++; } } return res; }
复杂度分析:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
给你一个没有排序的整数数组,请你找出其中没有出现的最小的正整数。
示例 1:
示例 2:
示例 3:
提示:
你的算法的时间复杂度为O(n) 并且只能使用常数级别的额外空间
思考:
如果这道题目没有额外的时间和空间复杂度的要求,其实比较容易实现:
方法一:
复杂度分析:
The text was updated successfully, but these errors were encountered: