北京六方云 2021.09.24 笔试题
北京六方云 2021.09.24 笔试题
(作者投的是算法岗,选择题和判断题都是深度学习的问题,可参考吴恩达的课程及课后练习)
编程题
题目描述
给定一个升序排序的数组和一个目标值,找出该目标值在数组中的起始下标和结束下标并返回,如果没有这个目标值,则返回[-1,-1]。
分析设计
很典型的二分查找的题目,稍有变形,给定的数组里可能有重复数字,我的思路是找到最左边的等于目标值的下标,然后依次向后遍历到最后一个等于目标值的下标。
代码实现
class Solution{ public int[] getBound(int[] nums, int target){ int l = 0, r = nums.length - 1; while(l < r){ int mid = l + (r - l) / 2; if(nums[mid] < target){ l = mid + 1; } else{ r = mid; } } if(nums[l] != target){ return new int[]{-1, -1}; } int[] ans = new int[2]; ans[0] = l; while(l < nums.length && nums[l] == target){ l++; } ans[1] = l - 1; return ans; } }
(不知道大家有没有什么其他的好的方法,求指导)