1. 程式人生 > 實用技巧 >LeetCode 1539. 第 k 個缺失的正整數 模擬

LeetCode 1539. 第 k 個缺失的正整數 模擬

地址https://leetcode-cn.com/problems/kth-missing-positive-number/

給你一個 嚴格升序排列的正整數陣列 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]

演算法1
暴力遍歷吧 不算很好的演算法

C++ 程式碼

class Solution {
public:
    int findKthPositive(vector<int>& arr, int k) {
        int i = 0;
        int curr =1;
        for(i = 0; i < arr.size();){
            
if(arr[i] > curr){ curr++; k--; if(k == 0) return curr-1; }else if(arr[i] < curr){ i++; }else if(arr[i] == curr){ curr++;i++; } } return curr+k-1; } };