标题
leetCode 第 35 题,查找刺进方位
相关类型:数组
给定一个排序数组和一个目标值,在数组中找到目标值,并回来其索引。假如目标值不存在于数组中,回来它将会被按次第刺进的方位。
你可以假定数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5
输出: 2
示例2:
输入: [1,3,5,6], 2
输出: 1
示例 3:
输入: [1,3,5,6], 7
输出: 4
示例 4java根底知识点:
输入: [1,3,5,6], 0
输出: 0
做题时数组的定义刻
class Solution {
public int searchI数组排序nsert(in数组排序t[] nums, in数组c言语t target) {
}
}
以上给出办法输入参数,完结作答。
标题分析
- 这leetcode和牛客网区别题看到标题,第一个想leetcode每日一题到的应该是二分查找
- 但是里边应该留心一些临界点,比方示例 3 和 4,需求多留心
- 然后用递归调用的办法进行查找
答复分析
本文只分析自己做题思路,仅供参考,了解一种解题思想,其他各种做题思路请上网查阅。
答复成功:数组排序
执行耗时:0 ms,打败了100.00% 的Java用户
内存消耗:38.2 MB,打败了45.11% 的Java用户
class Solution {
p数组和链表的区别ublic int searchInsert(int[] nums, int targe数组排序t) {
return binarySearch(nums, target, 0, nums.length - 1); //调用下面二分查找办法进行查找方位
}
public int binaleetcode是啥rySearch(int[] nums, int target, int start, int end) {
if (end<=starLeetCodet) { //leetcode中文官网临界点断定
if (target <= nums[startleetcode是干什么的]) {//回来详细坐标
return start;
} else if (target > nums[stjava编译器art]) {//比最大的都大,回来长度+1
r数组词eturn start + 1;
}
}
//下面便是常规二分查找的调用
int middle = (end - start) / 2 + start;
if (nums[middle] == target) {
retu数组指针rn middle;
} else if (nums[middleleetcode怎样刷题] > target) {
rjava环境变量配置eturn binarySearch(nums, target,数组排序 start, middle - 1);
}数组指针 else
return binarySearch(nums, target, middleetcode刷题攻略le + 1, end);
}
}
}