每日一道算法题 011 搜索插入位置

标题

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) {
}
}

以上给出办法输入参数,完结作答。

标题分析

  1. leetcode和牛客网区别题看到标题,第一个想leetcode每日一题到的应该是二分查找
  2. 但是里边应该留心一些临界点,比方示例 3 和 4,需求多留心
  3. 然后用递归调用的办法进行查找

答复分析

本文只分析自己做题思路,仅供参考,了解一种解题思想,其他各种做题思路请上网查阅。

答复成功:数组排序
执行耗时: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);
}
}
}

发表评论

提供最优质的资源集合

立即查看 了解详情