classSolution {
public:int findKthSmallest(vector<int>& a, vector<int>& b, int k) {
int i =0, j =0, ans =0;
while (k--) {
if (i < a.size() && (j >= b.size() || a[i] < b[j])) ans = a[i++];
else ans = b[j++];
}
return ans;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
funcfindKthSmallest(a, b []int, kint) int {
i, j:=0, 0varansintfork > 0 {
ifi < len(a) && (j>= len(b) ||a[i] < b[j]) {
ans = a[i]
i++ } else {
ans = b[j]
j++ }
k-- }
returnans}
1
2
3
4
5
6
7
8
9
10
classSolution {
publicintfindKthSmallest(int[] a, int[] b, int k) {
int i = 0, j = 0, ans = 0;
while (k--> 0) {
if (i < a.length&& (j >= b.length|| a[i]< b[j])) ans = a[i++];
else ans = b[j++];
}
return ans;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
classSolution {
funfindKthSmallest(a: IntArray, b: IntArray, k: Int): Int {
var i = 0; var j = 0; var ans = 0var kk = k
while (kk > 0) {
if (i < a.size && (j >= b.size || a[i] < b[j])) { ans = a[i]; i++ }
else { ans = b[j]; j++ }
kk-- }
return ans
}
}
1
2
3
4
5
6
7
8
9
10
11
deffind_kth_smallest(a: list[int], b: list[int], k: int) -> int:
i, j, ans =0, 0, 0while k >0:
if i < len(a) and (j >= len(b) or a[i] < b[j]):
ans = a[i]
i +=1else:
ans = b[j]
j +=1 k -=1return ans
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
impl Solution {
pubfnfind_kth_smallest(a: Vec<i32>, b: Vec<i32>, k: i32) -> i32 {
let (mut i, mut j, mut ans) = (0, 0, 0);
letmut kk = k;
while kk >0 {
if i < a.len() && (j >= b.len() || a[i] < b[j]) {
ans = a[i]; i +=1;
} else {
ans = b[j]; j +=1;
}
kk -=1;
}
ans
}
}
classSolution {
public:int findKthSmallest(vector<int>& a, vector<int>& b, int k) {
int n = a.size(), m = b.size();
if (n > m) return findKthSmallest(b, a, k);
int l = max(0, k - m), r = min(k, n);
while (l < r) {
int i = l + (r - l) /2;
int j = k - i;
if (i < n && j >0&& b[j-1] > a[i]) l = i +1;
else r = i;
}
int i = l, j = k - l;
int aLeft = (i ==0) ? INT_MIN : a[i-1];
int bLeft = (j ==0) ? INT_MIN : b[j-1];
returnmax(aLeft, bLeft);
}
};
funcfindKthSmallest(a, b []int, kint) int {
if len(a) > len(b) {
returnfindKthSmallest(b, a, k)
}
l, r:= max(0, k-len(b)), min(k, len(a))
forl < r {
i:=l+ (r-l)/2j:=k-iifi < len(a) &&j > 0&&b[j-1] > a[i] {
l = i+1 } else {
r = i }
}
i, j:=l, k-laLeft:=math.MinInt32bLeft:=math.MinInt32ifi > 0 {
aLeft = a[i-1]
}
ifj > 0 {
bLeft = b[j-1]
}
return max(aLeft, bLeft)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
classSolution {
publicintfindKthSmallest(int[] a, int[] b, int k) {
int n = a.length, m = b.length;
if (n > m) return findKthSmallest(b, a, k);
int l = Math.max(0, k - m), r = Math.min(k, n);
while (l < r) {
int i = l + (r - l) / 2;
int j = k - i;
if (i < n && j > 0 && b[j-1]> a[i]) l = i + 1;
else r = i;
}
int i = l, j = k - l;
int aLeft = (i == 0) ? Integer.MIN_VALUE : a[i-1];
int bLeft = (j == 0) ? Integer.MIN_VALUE : b[j-1];
return Math.max(aLeft, bLeft);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
classSolution {
funfindKthSmallest(a: IntArray, b: IntArray, k: Int): Int {
val n = a.size; val m = b.size
if (n > m) return findKthSmallest(b, a, k)
var l = maxOf(0, k - m); var r = minOf(k, n)
while (l < r) {
val i = l + (r - l) / 2val j = k - i
if (i < n && j > 0&& b[j-1] > a[i]) l = i + 1else r = i
}
val i = l; val j = k - l
val aLeft = if (i ==0) Int.MIN_VALUE else a[i-1]
val bLeft = if (j ==0) Int.MIN_VALUE else b[j-1]
return maxOf(aLeft, bLeft)
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
deffind_kth_smallest(a: list[int], b: list[int], k: int) -> int:
if len(a) > len(b):
return find_kth_smallest(b, a, k)
l, r = max(0, k - len(b)), min(k, len(a))
while l < r:
i = l + (r - l) //2 j = k - i
if i < len(a) and j >0and b[j-1] > a[i]:
l = i +1else:
r = i
i, j = l, k - l
a_left = a[i-1] if i >0else float('-inf')
b_left = b[j-1] if j >0else float('-inf')
return max(a_left, b_left)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
impl Solution {
pubfnfind_kth_smallest(a: Vec<i32>, b: Vec<i32>, k: i32) -> i32 {
let n = a.len(); let m = b.len();
if n > m { return Solution::find_kth_smallest(b, a, k); }
let (mut l, mut r) = (std::cmp::max(0, k asusize- m), std::cmp::min(k asusize, n));
while l < r {
let i = l + (r - l) /2;
let j = k asusize- i;
if i < n && j >0&& b[j-1] > a[i] { l = i +1; }
else { r = i; }
}
let i = l; let j = k asusize- l;
let a_left =if i ==0 { i32::MIN } else { a[i-1] };
let b_left =if j ==0 { i32::MIN } else { b[j-1] };
std::cmp::max(a_left, b_left)
}
}