Re: [闲聊] 每日leetcode

楼主: sustainer123 (caster)   2024-07-19 10:06:05
※ 引述《JerryChungYC (JerryChung)》之铭言:
: https://leetcode.com/problems/lucky-numbers-in-a-matrix
: 1380. Lucky Numbers in a Matrix
: ※ 引述《DJYOMIYAHINA (通通打死)》之铭言:
: : 其实直觉来看
: : 就取个row的minimum与各col的maximum
: : 如果这两个有交集就是答案了
: : 肥肥智商大概只到这里
: : 后来看别人讨论
: : 发现这个lucky number最多只有一个
: : 若存在两个lucky number的话 假设是(i0,j0)跟(i1,j1)位置
: : 可以导出
: : M(i0,j0) > M(i1,j0) > M(i1,j1) > M(i0,j1) > M(i0,j0) -> 矛盾
: : 所以不可能有两个lucky number
: : 然后这个lucky number
: : 也必然是 row minimums里面的maximum 以及 col maximums里面的minimum
: : 若不是row minimums里面的maximum的话 假设是row minimums里面第二大的
: : 代表那个column里的值 都是比这个第二大的值小
: : 那就代表其他row有更小的值 然后就怎样怎样的我打不完了我要去上班了==
: Example 1:
: Input: matrix = [[ 3, 7, 8],
: [ 9,11,13],
: [15,16,17]]
: Output: [15]
: Example 2:
: Input: matrix = [[ 1,10, 4, 2],
: [ 9, 3, 8, 7],
: [15,16,17,12]]
: Output: [12]
: Example 3:
: Input: matrix = [[7,8],
: [1,2]]
: Output: [7]
: class Solution:
: def luckyNumbers(self, matrix: List[List[int]]) -> List[int]:
: # result = []
: for row in matrix:
: row_min = min(row)
: min_index = row.index(row_min)
: if row_min == max(_[min_index] for _ in matrix):
: # result.append(row_min)
: return [row_min]
: # return result
: return []
: 照直觉写的 先找最小值 再根据index找最大值 符合就回传
: 注解的是原本写的 看这篇说只会有唯一解就改了一下
: 不过原本的成绩更好 不太重要就是了 随兴的leetcode系统
: 好久没打leetcode 刚好有个easy只好来骗骗p币了
思路:
差不多 找到row的最小值 跟col的最大值
然后就有解了 不过不知道能不能再压低时间复杂度
Python Code:
class Solution:
def luckyNumbers (self, matrix: List[List[int]]) -> List[int]:
min_row = []
max_col = []
for row in matrix:
min_row.append(min(row))
for i in range(len(matrix[0])):
cur = 0
for j in range(len(matrix)):
cur = max(cur,matrix[j][i])
max_col.append(cur)
for m in min_row:
if m in max_col:
return [m]
作者: JerryChungYC (JerryChung)   2024-07-19 10:17:00
大师
作者: JIWP (JIWP)   2024-07-19 10:25:00
大师
作者: dont   2024-07-19 11:02:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com