上一页 1 2 3 4 5 6 7 8 ··· 16 下一页
摘要: 二分搜索(binary search)算法 二分搜索算法,又名二分查找算法。 常用的使用场景:寻找一个数字、寻找左侧边界、寻找右侧边界 二分搜索模板 先介绍下二分搜索模板,后面的二分搜索都是基于这个二分搜索模板的 int binarySearch(int[] nums, int targer) { 阅读全文
posted @ 2023-12-21 15:14 Ac_c0mpany丶 阅读(67) 评论(0) 推荐(0)
摘要: 题目描述 思路:同LeetCode852.山脉数组的顶峰索引 注意:当nums数组只有一个元素的时候,这个元素就是顶元素 因为根据题目:nums[-1] = nums[n] = -∞ 方法一: class Solution { public int findPeakElement(int[] num 阅读全文
posted @ 2023-12-21 11:54 Ac_c0mpany丶 阅读(15) 评论(0) 推荐(0)
摘要: 题目描述 思路:用二分进行排除不满足条件的元素,最后剩下的元素即为答案 往常我们使用「二分」进行查值,需要确保序列本身满足「二段性」:当选定一个端点(基准值)后,结合「一段满足 & 另一段不满足」的特性来实现“折半”的查找效果。 但本题求的是峰顶索引值,如果我们选定数组头部或者尾部元素,其实无法根据 阅读全文
posted @ 2023-12-21 11:53 Ac_c0mpany丶 阅读(18) 评论(0) 推荐(0)
摘要: 题目描述 思路:二维矩阵坐标变换 + 二分查找 二维矩阵坐标变换: 只要知道二维数组的的行数m和列数n,二维数组的坐标 (i, j) 可以映射成一维的index = i * n + j;反过来也可以通过一维index反解出二维坐标 i = index / n,j = index % n。(n是列数) 阅读全文
posted @ 2023-12-21 11:53 Ac_c0mpany丶 阅读(30) 评论(0) 推荐(0)
摘要: 题目描述 思路 如果数组翻转后又回到升序的情况,即nums[left] <= nums[right],则nums[left]就是最小值,直接返回。 如果数组翻转,需要找到数组中第二部分的第一个元素: 若 nums[left] <= nums[mid],说明区间 [left,mid] 连续递增,则最小 阅读全文
posted @ 2023-12-20 12:53 Ac_c0mpany丶 阅读(18) 评论(0) 推荐(0)
摘要: 题目描述 思路:是lc33.搜索旋转排序数组的延伸,允许包含重复元素 起初: 当nums[left] <= nums[mid]时,区间[left,mid]有序 当nums[left] > nums[mid]时,区间[mid ,right]有序 但是这个题目当nums[left] == nums[mi 阅读全文
posted @ 2023-12-20 12:52 Ac_c0mpany丶 阅读(11) 评论(0) 推荐(0)
摘要: 题目描述 思路 基础二分搜索模板 本质:找到第一个大于等于target的元素的下标 注意: 该题目不存在重复元素 存在一种特殊情况:target > nums的最大值,此时插入的位置正好是left的位置 方法一: class Solution { public int searchInsert(in 阅读全文
posted @ 2023-12-19 20:28 Ac_c0mpany丶 阅读(26) 评论(0) 推荐(0)
摘要: 题目描述 思路: 二分查找之寻找左右侧边界 两个关键点:1. 数组有序;2. 时间复杂度O(log n) 方法一: class Solution { public int[] searchRange(int[] nums, int target) { if (nums.length == 0 || 阅读全文
posted @ 2023-12-19 20:27 Ac_c0mpany丶 阅读(17) 评论(0) 推荐(0)
摘要: 题目描述 思路 如果nums[left] <= nums[mid],则[left, mid]有序 如果nums[left] > nums[mid],则[mid,right]有序 方法一: class Solution { public int search(int[] nums, int targe 阅读全文
posted @ 2023-12-19 20:27 Ac_c0mpany丶 阅读(13) 评论(0) 推荐(0)
摘要: 题目描述 思路 基础二分查找模板的考察。 方法一: class Solution { public int search(int[] nums, int target) { if (nums == null || nums.length == 0) return -1; int left = 0, 阅读全文
posted @ 2023-12-19 20:26 Ac_c0mpany丶 阅读(21) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 16 下一页