一、題目大意
標簽:陣列
https://leetcode.cn/problems/search-a-2d-matrix-ii
撰寫一個高效的演算法來搜索 m x n 矩陣 matrix 中的一個目標值 target ,該矩陣具有以下特性:
每行的元素從左到右升序排列,
每列的元素從上到下升序排列,
示例 1:
輸入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
輸出:true
示例 2:
輸入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
輸出:false
提示:
- m == matrix.length
- n == matrix[i].length
- 1 <= n, m <= 300
- -109 <= matrix[i][j] <= 109
- 每行的所有元素從左到右升序排列
- 每列的所有元素從上到下升序排列
- -109 <= target <= 109
二、解題思路
解題技巧:從右上角開始查找,若當前值大于待搜索值,向左移動一位,若當前值小于待搜索值,向下移動一位,如果最終移動到左下角時仍不等于待搜索值,則說明待搜索值不存在于矩陣中,
三、解題方法
3.1 Java實作
public class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
// 從右上角開始搜索,比target大就向左移,比target小就向下移
int x = matrix.length - 1;
int y = 0;
while (x >=0 && y < matrix[0].length) {
if (matrix[x][y] == target) {
return true;
} else if (matrix[x][y] > target) {
x--;
} else {
y++;
}
}
return false;
}
}
四、總結小記
- 2022/8/5 疫情啊,什么時候能消停一會
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/501087.html
標籤:其他
下一篇:「學習筆記」矩陣乘法與矩陣快速冪
