41. First Missing Positive
来源:互联网 发布:qq三国js技能展示 编辑:程序博客网 时间:2024/06/03 23:39
public class Solution { public int firstMissingPositive(int[] nums) { int count = 0; int start = 0; int end = nums.length - 1; // 这个把负数放到了最后的位置,其实没有必要,管负数,遇到负数直接跳过也行 while (start < end) { if (nums[end] <= 0) { end--; continue; } if (nums[start] > 0) { start++; continue; } swap(nums, end, start); } for (int i = nums.length - 1; i >= 0; i--) { if (nums[i] > 0) break; count++; } int len = nums.length - count; for (int i = 0; i < len; i++) { //只有数字在相应的位置,或者特别大,没有位置的时候,他就继续往前走,比如1在第一个位置,就是数组的0,2应该在数组的1位置 if (i + 1 == nums[i]||nums[i]>=len) continue; else { //这个本来可以用i!=nums[i]-1来判断,但是可能有重复,再套一层数组是为了重复时也继续向前走,不然他会一直和它对应的位置交换 while (nums[i]-1<len&&nums[i] != nums[nums[i]-1]) { swap(nums, nums[i] - 1, i); } } } for (int i=0;i<len;i++){ if (i+1!=nums[i]){ return i+1; } } return len+1; } private void swap(int[] nums, int end, int start) { int swap = nums[end]; nums[end] = nums[start]; nums[start] = swap; }}
0 0
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- ZBrush中移动笔使用教程
- C++模板
- Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
- Run .bat file every 5 seconds on Windows
- [Linux]信号量机制
- 41. First Missing Positive
- 让PIP源使用国内镜像,提升下载速度和安装成功率
- 股票入门基础知识26:销售现金比率——现金流良好情况
- 0. 设计模式概述
- 二、VMware虚拟机下Ubuntu网络配置(NET模式)
- 使用@SpringBootApplication注解
- org.springframework.beans.factory.UnsatisfiedDependencyException异常
- django nginx 单域名 多站点 sessionid 冲突问题
- ubuntu linux 安装 jdk8 wget curl