aboutsummaryrefslogtreecommitdiff
path: root/other/kth_missing_pos_num.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'other/kth_missing_pos_num.cpp')
-rw-r--r--other/kth_missing_pos_num.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/other/kth_missing_pos_num.cpp b/other/kth_missing_pos_num.cpp
new file mode 100644
index 0000000..a7f81f7
--- /dev/null
+++ b/other/kth_missing_pos_num.cpp
@@ -0,0 +1,30 @@
+// 1539. Kth Missing Positive Number
+#include "leetcode.h"
+
+/*
+ * given array 'arr' of positive integers sorted in a strictly increasing order,
+ * and an integer 'k', return 'kth' positive integer missing from array -- o(log
+ * n)
+ */
+
+class Solution {
+public:
+ int findKthPositive(vector<int> &arr, int k) {
+ int l = 0, r = arr.size(), m;
+ while (l < r) {
+ m = (l + r) / 2;
+ if (arr[m] - 1 - m < k)
+ l = m + 1;
+ else
+ r = m;
+ }
+ return l + k;
+ }
+};
+
+int main() {
+ Solution obj;
+ vector<int> a1 = {2, 3, 4, 7, 11}, a2 = {1, 2, 3, 4};
+ cout << obj.findKthPositive(a1, 5) << endl; // expect: 9
+ cout << obj.findKthPositive(a2, 2) << endl; // expect: 6
+}