LeetCode--041--缺失的第一个整数(java)
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。
示例 1:
输入: [1,2,0]
输出: 3
示例 2:
输入: [3,4,-1,1]
输出: 2
示例 3:
输入: [7,8,9,11,12]
输出: 1
说明:
你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。
思路:
case1:length == 0 return 1
case2:length == 1 case2.1 [-1] [-....] [0] [2] [...] return 1
case2.2 [1] return 2
case3: length >1 跳过负数 case3.1 (nums[i] - nums[i-1] > 1) && (nums[i] > 1) [-1,2,3] or [-1,3,100] return 1
case3.2 (nums[i] - nums[i-1] > 1) && (nums[i] - nums[i-1] < nums[i]) [-1,1,3] return nums[i-1] + 1
case4: length > 1 i走到了最后一个 [1,2,3] return nums[nums.length -1 ] + 1
case5:length > 1 全为负数 return 1
class Solution {
public int firstMissingPositive(int[] nums) {
if(nums.length == 0 || nums == null) return 1;
Arrays.sort(nums);
if(nums.length == 1){
if(nums[0] < 1 || nums[0] > 1){//[-1] [2]
return 1;
}else{
return 2;//[1]
}
}
if(nums[0] > 1) return 1;
for(int i = 1;i < nums.length;i++){
if(nums[i] < 0)continue;
if(nums[i] - nums[i-1] > 1 && nums[i] - nums[i-1] < nums[i]){//跳过[-1,2,3]
return nums[i - 1] + 1;
}else if(nums[i] - nums[i-1] > 1 && nums[i] > 1) return 1;//[-1,2,3]
if(i == nums.length - 1){
return nums[i] + 1;
}
}
return 1;
}
}
2019-05-01 21:11:23
LeetCode--041--缺失的第一个整数(java)的更多相关文章
- LeetCode:缺失的第一个正数【41】
LeetCode:缺失的第一个正数[41] 题目描述 给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3示例 2: 输入: [3,4,-1,1] ...
- Java实现 LeetCode 41 缺失的第一个正数
41. 缺失的第一个正数 给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 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: 输入: ...
- leetcode之缺失的第一个正数
给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0]输出: 3示例 2: 输入: [3,4,-1,1]输出: 2示例 3: 输入: [7,8,9,11,12] ...
- 【LeetCode】缺失的第一个正数【原地HashMap】
给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9,11 ...
- LeetCode 41. 缺失的第一个正数(First Missing Positive)
题目描述 给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8 ...
- leetcode 41缺失的第一个正数
time O(n) space O(1) class Solution { public: int firstMissingPositive(vector<int>& nums) ...
- LeetCode缺失的第一个正数
LeetCode 缺失的第一个正数 题目描述 给你一个未排序的整数数组 nums,请你找出其中没有出现的最小的正整数. 进阶:你可以实现时间复杂度为 O(n)并且只使用常数级别额外空间的解决方案吗? ...
- Leetcode(8)字符串转换整数
Leetcode(8)字符串转换整数 [题目表述]: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我 ...
随机推荐
- 职位-CEO:CEO
ylbtech-职位-CEO:CEO 首席执行官(Chief Executive Officer,缩写CEO),职位名称,是在一个企业中负责日常事务的最高行政官员,主司企业行政事务,又称作司政.行政总 ...
- java 操作hdfs(连接HDFS)
FileSystem fs = null; Configuration conf = null; @Before public void init() throws Exception{ conf = ...
- fpython-笔记(五)装饰器、匿名函数
一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里 ...
- Delphi XE2 之 FireMonkey 入门(3) - 关于 TPosition
把 FireMonkey 简称为 FM 吧. FM 的窗体继续使用 Left.Top 属性, 但更多控件不是了. //FM 控件的位置控制不再是 Left.Top, 取而代之的是 Position 属 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_07 Collections工具类_3_Collections集合工具类的方法
第二个参数传递了一个匿名内部类.结果就出现了下面的代码 源码里面有Compare方法,对比两个参数 要重写比较的方法 对对象进行排序 创建学生类.对学生类进行排序 重写Person的ToString方 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_5_Entry键值对对象
- Jenkins---简单认识
老生常谈:知其然更要知其所以然,所以补充一下Jenkins的相关知识 官方文档:https://jenkins.io/zh/doc/ 问题1:Jenkins是什么? 1.1.Jenkins是一个开源的 ...
- Spring003--Spring事务管理(mooc)
Spring事务管理 一.事务回顾 1.1.什么是事务 事务指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败. 异常情况发生,需要保证:[1]张三将钱转出,李四收到钱.[2]张三钱未成功转出 ...
- mooc-IDEA 使用界面--001
IntelliJ IDEA 快捷键应用小结 1.Ctrl+E : 打开最近所有浏览过的文件 2.Ctrl+Shift+E :打开最近所有编辑修改过的文件 3.ctrl+shift+Backspace ...
- gdi+ 中发生一般性错误
1.检查文件夹权限 2.保存的文件已存在并因某种原因被锁定. 3.文件夹路径不存在