958-缺失的第一个整数
题目如下
给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。
示例 1:
输入: [1,2,0]
输出: 3
示例 2:
输入: [3,4,-1,1]
输出: 2
解题代码
int firstMissingPositive(vector<int> &nums)
{int len = nums.size(); //8for (int i = 0; i < len; ++i){while(nums[i] > 0 && nums[i] <= len && nums[nums[i]-1]!=nums[i]){swap(nums[i], nums[nums[i] - 1]);}}for (int i = 0; i < len; ++i){if (nums[i] != i+1)return i + 1;}return len + 1;
}
class Solution {public:int firstMissingPositive(vector<int>& nums){int i = 0;int n = nums.size();if (n == 0) return 1;while (i < n){/*nums[i]=i+1;是核心思想,将数组中的元素尽可能的实现nums[i]=i+1;能帮助我们找到第一个缺失的正整数。nums[i]>=1 和 nums[i]<=n :因为数组中有些值大于n,所以不能实现 nums[i]=i+1;所以我们不管这些值。nums[nums[i]-1]!= nums[i]:若将此表达式去掉的话,那么nums[nums[i-1]]=nums[i]情况下则会使程序陷入死循环。*/if (nums[i] != i + 1 && nums[i] >= 1 && nums[i] <= n && nums[nums[i] - 1] != nums[i]){swap(nums[i], nums[nums[i] - 1]);}//若在swap函数后面++i 则会有可能使交换后的nums[i]的值失去归位机会(nums[x]=x+1;),最后导致结果错误else{++i;}}for (int j = 0; j < n; ++j){if (nums[j] != j + 1){return j + 1;}}return n + 1;}
};
958-缺失的第一个整数相关推荐
- leetcode 41.缺失的第一个整数
题目 给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9 ...
- 41. 缺失的第一个正数 golang
41. 缺失的第一个正数 给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3 ...
- Java实现 LeetCode 41 缺失的第一个正数
41. 缺失的第一个正数 给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: ...
- Leetcode算法Java全解答--41. 缺失的第一个正数
Leetcode算法Java全解答–41. 缺失的第一个正数 文章目录 Leetcode算法Java全解答--41. 缺失的第一个正数 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 ...
- Leetcode 40组合总数(回溯)Ⅱ41缺失的第一个正数42接雨水
维护公众号:bigsai ,回复进群加入打卡,回复bigsai分享一些学习资源! 上周第一次 LeetCode 36有效的数独&37解数独(八皇后问题) 上周第二次 LeetCode 38外观 ...
- LeetCode--41.缺失的第一个正数(C)
缺失的第一个正数(C) 1. 题目描述 2. 题目分析 3. C语言实现 3.1 申请额外空间实现 3.2 原数组实现 1. 题目描述 难度:困难 2. 题目分析 这道题本质上是很简单的,但是加上了这 ...
- 41. First Missing Positive 缺失的第一个正数
Title 给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数. 示例 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: 输入: [7,8,9,11 ...
- 如何表示数组所有数都不等于一个数_力扣刷题那些事儿(3)-缺失的第一个正整数(41)...
问题描述 官网题目地址: 力扣leetcode-cn.com 问题分析 典型的 "看起来很简单" 的题目,但再仔细看发现要求时间复杂度和空间复杂度要求就知道自己错了. 简单描述就 ...
- 努力前端【LeetCode-10】448. 找到所有数组中消失的数字 442. 数组中重复的数据(中等) 41. 缺失的第一个正数(困难) [鸽笼原理,数组,Map,类似No.645]
文章目录 题目描述-448 一.哈希Map 二.空间复杂度的优化--鸽笼原理 三.总结 题目描述-442 一.还是hashMap 二.继续鸽笼原理 题目描述-41 一.基础方案 二.数组模拟Map 题 ...
最新文章
- Leangoo团队敏捷开发实现过程
- 线程撕裂者安装linux,Linux FreeBSD 12.1跑分测试:在AMD Ryzen线程撕裂者3970X上快得刷新认知...
- java 线程安全_Java创建线程安全的方法
- 转:PHP 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
- [蓝桥杯][算法提高VIP]Sharing Chocolate(状压dp记忆化搜索)
- C语言程序设计孙家啸第一版,广东年月自考各专业课程使用教材.doc
- 九齐NY8B072A单片机使用笔记(一)TIMER0定时器
- 从Gartner报告,看中国数据库崛起
- vuex 在非组件中调用 mutations 方法
- iOS:×××送(二)----pem证书的生成
- Android控件——TextView与EditText
- java多线程问题(代码示例)
- 【背包DP】【2018.9.20普及组模拟】T3(WOJ 3975)保护羊村
- 三、GAMIT解算之分步处理
- chatbot_Chatbot开发简介
- 靶场环境的搭建(2020年6月15日学习笔记)
- 电大计算机科学与技术课程,大学计算机科学与技术专业(本科)专业课程设置及教学管理...
- 极光推送收费标准_《天涯明月刀OL腾讯旗下 北极光工作室的 厄运魔咒:“做什么凉什么”》...
- HTML入门二(列表,表格与表单)
- 基于JavaGUI实现的订餐管理系统
热门文章
- 什么是前端(web front end)?
- 《设计团队协作权威指南》—第2章2.2节设计师的最佳心态
- 关于浙政钉水印的问题
- 计算机毕业设计Java办公自动化管理系统(源码+系统+mysql数据库+lw文档)
- Java并发之Semaphore源码解析
- 踩坑ImageMagick将ios图片文件HEIC格式转jpg/png等
- Qt源码编译configure配置参数
- java中的移位操作详解
- python plot 图像大小_设置matplotlib图像的figsize和dpi
- ffmpeg转码,输入视频帧率与输出帧率不相等时,出现丢帧问题