遍歷楊氏矩陣查詢一個數
阿新 • • 發佈:2018-12-18
楊氏矩陣 有一個二維陣列. 陣列的每行從左到右是遞增的,每列從上到下是遞增的. 在這樣的陣列中查詢一個數字是否存在。 時間複雜度小於O(N); 陣列: 1 2 3 2 3 4 3 4 5 1 3 4 2 4 5 4 5 6 1 2 3 4 5 6 7 8 9
思路:時間複雜度小於O(n),二分查詢思想
int Find_num(int arr[3][3], int rows, int cols, int key) { if(arr[0][0]>key && arr[2][2]<key) { return 0; } int row = 0; int col = cols-1; while ((row < rows) && (col >= 0)) //右上角 { if (key < arr[row][col]) { col--; } if (key > arr[row][col]) { row++; } if (key == arr[row][col]) { return 1; } } return 0; } int find_num(int arr[3][3], int row, int col, int key) { if(arr[0][0]>key && arr[2][2]<key) { return 0; } int x = 0; int y = col-1; while(x<row && y>=0) //右上角 { if(key == arr[x][y]) { return 1; } else if(key > arr[x][y]) { x++; } else { y--; } } return 0; }