相较于基本的二分算法,该题解关键在于如何输出第一个重复数字及没有查找值时如何返回。
解决重复数字问题:在原有基本的二分算法中当a[mid] == val 中用一层循环判断mid 前是否是重复数字并注意下标是否越界,之后返回题目要求位置(下标加1)。
无查找值返回:返回退出循环时的元素位置,left < right 退出循环,这时返回left 指向元素位置。
解决重复数字问题:在原有基本的二分算法中当a[mid] == val 中用一层循环判断mid 前是否是重复数字并注意下标是否越界,之后返回题目要求位置(下标加1)。
无查找值返回:返回退出循环时的元素位置,left < right 退出循环,这时返回left 指向元素位置。
我已经通过这道算法题! 请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。
https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fwww.nowcoder.com%2FquestionTerminal%2F7bc4a1c7c371425d9faa9d1b511fe193
全部评论
相关推荐
点赞 评论 收藏
转发