【每日一题】1539. 第 k 个缺失的正整数

1539. 第 k 个缺失的正整数 - 力扣(LeetCode)

给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。

请你找到这个数组里第 k 个缺失的正整数。

示例 1:

输入:arr = [2,3,4,7,11], k = 5
输出:9
解释:缺失的正整数包括 [1,5,6,8,9,10,12,13,...] 。第 5 个缺失的正整数为 9 。

示例 2:

输入:arr = [1,2,3,4], k = 2
输出:6
解释:缺失的正整数包括 [5,6,7,...] 。第 2 个缺失的正整数为 6 。

提示:

  • 1 <= arr.length <= 1000
  • 1 <= arr[i] <= 1000
  • 1 <= k <= 1000
  • 对于所有 1 <= i < j <= arr.length 的 i 和 j 满足 arr[i] < arr[j] 
class Solution {
    public int findKthPositive(int[] arr, int k) {
        int num = 1;
        int len = arr.length;
        int count = 1;//记录已经缺了几个数
        for(int i = 0 ; i < len ; i++) {
            if(arr[i] != num) {
                while(arr[i]!=num) {
                    num++;
                    count++;
                    if(count == k) break;
                }
            }
            if(count==k) break;
            num++;
        }

        return num+k-count;
    }
}

         每日一题,今天是简单题。

        这道题其实模拟就可以做出来了。用num模拟数字,用count模拟寻找的次数。一旦count到达相应的次数就可以跳出来了。而能用num模拟数字,主要是因为数组是严格递增的。

        简单写完,是周六,大家休息一下吧。也可以去题解处看看更快的解法。

【每日一题】1539. 第 k 个缺失的正整数_第1张图片

你可能感兴趣的:(每日一题,java,算法,数据结构,力扣)