【Leetcode解題】240. Search a 2D Matrix II
題目
解題概念
- 此題簡單來說,就是要從一陣列
matrix中,找出目標target - 實際執行上,要從陣列的特性下手 :
- 對 Each Row 而言,最大值都位於最右方
- 對 Each Column 而言,最小值都位於最上方
- 故可推論出,搜尋起始點為右上方
- 接著,主要迴圈的判斷方式為 :
- 若
matrix[i][j] = target: 找到目標,回傳true - 若
matrix[i][j] > target: 代表matrix[i][j]那列左方還有更小的元素,故j -= 1 - 若
matrix[i][j] < target: 代表matrix[i][j]那排下方還有更大的元素,故i += 1
- 若
實際寫Code
- 目標函式 :
searchMatrix(matrix, target)- Input :
matrix: List[List[int]]、target: int - Output :
bool
- Input :
- 前置作業 :
1
2
3
4
5
6i_len = len(matrix)
j_len = len(matrix[0])
# 設定好右上方元素 matrix[i][j] 為起始點
i = 0
j = j_len - 1 - 主要迴圈 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17# 若 i 與 j 皆在合理範圍中
while i < i_len and j >= 0:
# 相等之狀況
if matrix[i][j] == target :
return True
# 元素大於目標之狀況
elif matrix[i][j] > target :
j -= 1
# 元素小於目標之狀況
else :
i += 1
# 若跑完迴圈仍未回傳 true,代表陣列 matrix 中無目標值 target,因此回傳 false
return False
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Robin's Tech Blog!


