import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param labels int整型一维数组 * @param target int整型 * @return int整型 */ public int searchInsert (int[] labels, int target) { int left = 0; int right = labels.length - 1; while (left <= right) { int mid = (left + right) / 2; if (labels[mid] > target) { right = mid - 1; } else if (labels[mid] < target) { left = mid + 1; } else { return mid; } } return left; } }
本题知识点分析:
1.二分查找
2.数组遍历
3.双指针
本题解题思路:
1.利用双指针的二分查找
2.循环条件left<=right
3.当mid大于target说明需要缩小,往左移动 ->right = mid - 1
4.当mid小于target说明需要扩大,往右移动 ->left = mid + 1
5.如果mid=target说明相等,找到就直接返回
6.如果没找到就说明left就是该插入的位置,返回left,模拟一个测试用例就可以了