public class KthMissingPositiveNumber {
public static int kmpn(int [] arr, int k) {
if (arr == null || arr.length == 0 || k <= 0) {
return 0;
}
int[] dp = new int[arr.length+1];
dp[1] = arr[0]-1;
if (k < dp[1]) {
return k;
}
for (int i = 2; i <= arr.length; i++) {
dp[i] = dp[i-1] + arr[i-1] - arr[i-2] -1;
if (dp[i] > k) {
return arr[i-1 -1] + (k - dp[i-1]);
}
}
if (k > dp[arr.length]) {
return arr[arr.length-1] + (k - dp[arr.length]);
}
return 0;
}
public static void main(String[] args) {
System.out.println(kmpn(new int[]{2,3,4,7,11}, 5));
System.out.println(kmpn(new int[]{1,2,3,4}, 2));
}
}
动态规划 - Kth Missing Positive Number
最新推荐文章于 2024-09-13 16:27:15 发布
这是一道关于动态规划的简单算法题,旨在找到数组中第K个缺失的正数。通过构建dp数组,可以求得每个位置之前跳过的数字总数。解题关键在于处理边界情况,如dp[1]的初始化和dp[i]的更新公式。对于第k个跳过的数字,需要考虑三种情况:在第一个数字左边、之间或右边。
摘要由CSDN通过智能技术生成