【LeetCode 41】缺失的第一个正数
2024-08-25 07:15:59
【题解】
先明确一点假设给的数字有n个。
那么最后的答案最情况下就是n+1
首先我们先判断一下所给的数组里面有没有1
如果没有直接返回1
否则。
把数组中所有的范围超过n或者小于1的数字全都改成数字1
然后扫描一遍整个数组。
for(int i = 0;i
【代码】
class Solution {
public:
int firstMissingPositive(vector<int>& nums) {
bool ok = false;
for (int x:nums){
if (x==1){
ok = true;
}
}
if (!ok) return 1;
int len = nums.size();
for (int i = 0;i < len;i++){
if (nums[i]>len || nums[i]<1){
nums[i] = 1;
}
}
for (int i = 0;i < len;i++){
int x = nums[i];
if (x<0){
x=-x;
}
nums[x-1]=-abs(nums[x-1]);
}
for (int i = 0;i < len;i++)
if (nums[i]>0)
return i+1;
return len+1;
}
};
最新文章
- 如何理解T-SQL中Merge语句(二)
- 【WP开发】读写剪贴板
- XML前言
- asp.net core + angular2 的环境配置
- torisegit 保存帐号密码
- windows编程初步
- eclipse中project facet问题
- idea Artifact mdn:war exploded: Server is not connected. Deploy is not available.
- gdb命令调试技巧
- hustOJ 添加 golang 支持
- npoi实现数据导出Excel
- VS2015/Visual Studio快捷键无效问题
- GCC卡常
- 环境的配置; host 配置地址
- DataTables页面列点击排序
- Makefile经典教程(一个很棒很清晰的讲解)【转】
- 关于ie6出现的问题的原因归结
- Cracking The Coding Interview 4.1
- php算法面试案例(转)
- whith ~ as 用法