题解 | #缺失的第一个正整数# [S-P1]

缺失的第一个正整数

http://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5

[S-P3]: 由于不重复,缺少的正整数值属于[1, n+1], e.g.
[1,2,3,4,5] => 6
[1,2,3,4,6] => 5
import java.util.*;

// 缺少的正整数值属于[1, n+1]
public class Solution {
    public int minNumberDisappeared (int[] nums) {
      int n = nums.length;
      for (int i = 0; i < n; i++) {
        while (nums[i] != i+1 && nums[i] > 0 && nums[i] <= n) {
          // e.g. if nums[0] = 3, swap nums[0] with nums[3-1=2]
          swap(i, nums[i]-1, nums);
        }
      }
  
      for (int i = 0; i < n; i++) {
        if (nums[i] != i+1) return i+1;
      }
      
      return n+1;
    }
  
    void swap(int i, int j, int[] nums) {
      int tmp = nums[i];
      nums[i] = nums[j];
      nums[j] = tmp;
    }
}
全部评论

相关推荐

缒梦&独舞:这家公司是这样的,去年给我实习offer了,不过也是面着玩儿的,他周六还要去做公益志愿活动
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务