Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit bcc6037

Browse files
feat: add solutions to lc problem: No.1539 (doocs#601)
No.1539.Kth Missing Positive Number
1 parent 497b160 commit bcc6037

File tree

4 files changed

+90
-4
lines changed

4 files changed

+90
-4
lines changed

‎solution/1500-1599/1539.Kth Missing Positive Number/README.md‎

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,43 @@
4949
<!-- 这里可写当前语言的特殊实现逻辑 -->
5050

5151
```python
52-
52+
class Solution:
53+
def findKthPositive(self, arr: List[int], k: int) -> int:
54+
if arr[0] > k:
55+
return k
56+
left, right = 0, len(arr)
57+
while left < right:
58+
mid = (left + right) // 2
59+
if arr[mid] - mid - 1 < k:
60+
left = mid + 1
61+
else:
62+
right = mid
63+
return k - (arr[left - 1] - (left - 1) - 1) + arr[left - 1]
5364
```
5465

5566
### **Java**
5667

5768
<!-- 这里可写当前语言的特殊实现逻辑 -->
5869

5970
```java
60-
71+
class Solution {
72+
public int findKthPositive(int[] arr, int k) {
73+
if (arr[0] > k) {
74+
return k;
75+
}
76+
int left = 0, right = arr.length;
77+
while (left < right) {
78+
int mid = (left + right) >> 1;
79+
int cur = mid == arr.length ? Integer.MAX_VALUE : arr[mid];
80+
if (cur - mid - 1 < k) {
81+
left = mid + 1;
82+
} else {
83+
right = mid;
84+
}
85+
}
86+
return k - (arr[left - 1] - (left - 1) - 1) + arr[left - 1];
87+
}
88+
}
6189
```
6290

6391
### **...**

‎solution/1500-1599/1539.Kth Missing Positive Number/README_EN.md‎

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,41 @@
4343
### **Python3**
4444

4545
```python
46-
46+
class Solution:
47+
def findKthPositive(self, arr: List[int], k: int) -> int:
48+
if arr[0] > k:
49+
return k
50+
left, right = 0, len(arr)
51+
while left < right:
52+
mid = (left + right) // 2
53+
if arr[mid] - mid - 1 < k:
54+
left = mid + 1
55+
else:
56+
right = mid
57+
return k - (arr[left - 1] - (left - 1) - 1) + arr[left - 1]
4758
```
4859

4960
### **Java**
5061

5162
```java
52-
63+
class Solution {
64+
public int findKthPositive(int[] arr, int k) {
65+
if (arr[0] > k) {
66+
return k;
67+
}
68+
int left = 0, right = arr.length;
69+
while (left < right) {
70+
int mid = (left + right) >> 1;
71+
int cur = mid == arr.length ? Integer.MAX_VALUE : arr[mid];
72+
if (cur - mid - 1 < k) {
73+
left = mid + 1;
74+
} else {
75+
right = mid;
76+
}
77+
}
78+
return k - (arr[left - 1] - (left - 1) - 1) + arr[left - 1];
79+
}
80+
}
5381
```
5482

5583
### **...**
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public int findKthPositive(int[] arr, int k) {
3+
if (arr[0] > k) {
4+
return k;
5+
}
6+
int left = 0, right = arr.length;
7+
while (left < right) {
8+
int mid = (left + right) >> 1;
9+
int cur = mid == arr.length ? Integer.MAX_VALUE : arr[mid];
10+
if (cur - mid - 1 < k) {
11+
left = mid + 1;
12+
} else {
13+
right = mid;
14+
}
15+
}
16+
return k - (arr[left - 1] - (left - 1) - 1) + arr[left - 1];
17+
}
18+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
def findKthPositive(self, arr: List[int], k: int) -> int:
3+
if arr[0] > k:
4+
return k
5+
left, right = 0, len(arr)
6+
while left < right:
7+
mid = (left + right) // 2
8+
if arr[mid] - mid - 1 < k:
9+
left = mid + 1
10+
else:
11+
right = mid
12+
return k - (arr[left - 1] - (left - 1) - 1) + arr[left - 1]

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /