leetcode-240-探索二次元マトリクスII(search a 2 ds matrix 2)-java
1604 ワード
テーマとテスト
解法1(成功,7 ms,速い)
行列の正対角線の両端から、彼らの2つの方向はすべて大きくなったり小さくなったりして、反対角線の両端から、方向は1つが大きくなって、1つが小さくなって、大きさによって、相応の方向に走って、行列の境界に出会ったり超えたりするまで
まず、(rows−1,0)の要素をxとし、与えられたtarget>xであれば、延行方向を右に探し、そうでなければ延列方向を上に探します.
package pid240;
/* II
m x n matrix target。 :
。
。
:
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。
target = 20, false。
*/
public class main {
public static void main(String[] args) {
int[][] testTable = {{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}};
int[] testTable2=new int[]{5,20};
for(int i=0;i
解法1(成功,7 ms,速い)
行列の正対角線の両端から、彼らの2つの方向はすべて大きくなったり小さくなったりして、反対角線の両端から、方向は1つが大きくなって、1つが小さくなって、大きさによって、相応の方向に走って、行列の境界に出会ったり超えたりするまで
まず、(rows−1,0)の要素をxとし、与えられたtarget>xであれば、延行方向を右に探し、そうでなければ延列方向を上に探します.
public boolean searchMatrix(int[][] matrix, int target) {
int row=matrix.length;
if(row==0){
return false;
}
int col=matrix[0].length;
if(col==0){
return false;
}
//
int i=row-1;
int j=0;
while(i>=0 && j