aboutsummaryrefslogtreecommitdiffstats
path: root/378/main.py
diff options
context:
space:
mode:
authorterminaldweller <thabogre@gmail.com>2022-08-02 04:55:44 +0000
committerterminaldweller <thabogre@gmail.com>2022-08-02 04:55:44 +0000
commit68d22aa4ab37adb606e014f362b4b6652e397cc7 (patch)
treeb2f569b3d7e8738b7627cf99a7a23afcd4779c7f /378/main.py
parentupdate (diff)
downloadleetcode-68d22aa4ab37adb606e014f362b4b6652e397cc7.tar.gz
leetcode-68d22aa4ab37adb606e014f362b4b6652e397cc7.zip
update
Diffstat (limited to '')
-rwxr-xr-x378/main.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/378/main.py b/378/main.py
new file mode 100755
index 0000000..873a8e6
--- /dev/null
+++ b/378/main.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python3
+# https://leetcode.com/problems/k-th-smallest-prime-fraction/discuss/115819/Summary-of-solutions-for-problems-%22reducible%22-to-LeetCode-378
+
+from typing import List
+import math
+
+
+class Solution:
+ def kthSmallest(self, matrix: List[List[int]], k: int) -> int:
+ n: int = len(matrix)
+ l: int = matrix[0][0]
+ r: int = matrix[n - 1][n - 1]
+
+ cnt: int = 0
+ m: int = 0
+ while l < r:
+ cnt = 0
+ if (l + (r - l) / 2) < 0:
+ m = math.floor(l + ((r - l) / 2))
+ else:
+ m = math.floor(l + ((r - l) / 2))
+
+ for i in range(0, n):
+ j: int = n - 1
+ while j >= 0 and matrix[i][j] > m:
+ j -= 1
+ cnt += j + 1
+
+ print(cnt, m)
+ if cnt < k:
+ l = m + 1
+ else:
+ r = m
+
+ return l
+
+
+def main():
+ solution = Solution()
+ print(solution.kthSmallest([[1, 5, 9], [10, 11, 13], [12, 13, 15]], 8))
+ print(solution.kthSmallest([[-5]], 1))
+ print(solution.kthSmallest([[1, 2], [1, 3]], 2))
+ print(solution.kthSmallest([[1, 2], [1, 3]], 3))
+ print(solution.kthSmallest([[-5, -4], [-5, -4]], 1))
+
+
+if __name__ == "__main__":
+ main()