leetcode-74-搜索二維矩陣
矩陣最后一列升序排序,在最后一列中查找第一個大于等于target的元素
然后在該元素所在行進行二分查找
bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target) {int n = matrixSize;int m = matrixColSize[0];int i;for(i = 0 ; i < n ; i++){if(target <= matrix[i][m-1]){int l = 0, r = m-1;while(l <= r){int mid = (r+l)/2;if(target > matrix[i][mid])l = mid+1;else if(target < matrix[i][mid])r = mid-1;else return true;}return false;}}return false;
}
leetcode-33-搜索旋轉排序數組
題意為:在一個旋轉過的數組中查找目標值target,若存在返回其下標,否則返回-1
將數組一分為二,其中一定有一個是有序的,另一個可能是有序,也能是部分有序。 此時有序部分用二分法查找。無序部分再一分為二,其中一個一定有序,另一個可能有序,可能無序。就這樣循環.
?
int search(int* nums, int numsSize, int target) {int n = numsSize;if(n == 0)return -1;if(n ==1)return nums[0] == target ? 0 : -1;int l = 0, r = n-1;while(l <= r){int mid = (l+r)/2;if(nums[mid] == target)return mid;if(nums[0] <= nums[mid]){if(nums[0] <= target&& target <= nums[mid]){r = mid-1;}else{l = mid +1;}}else{if(nums[mid] < target && target <= nums[n-1]){l =mid+1;}else{r = mid-1;}}}return -1;
}
leetcode-153-尋找旋轉排序數組中的最小值
leetcode-4-尋找兩個正序數組的中位數
leetcode-155-最小棧
leetcode--394-字符串解碼
leetcode-739-每日溫度
leetcode-84-柱狀圖中最大矩形
leetcode-215-數組中的第K大元素
leetcode-121-買賣股票的最佳時機