博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
35. Search Insert Position
阅读量:5252 次
发布时间:2019-06-14

本文共 1228 字,大约阅读时间需要 4 分钟。

给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。

你可以假设在数组中无重复元素。

 

一句话思路:找到第一个大于等于target的数。问题:以为要改模板,不会。

思路真身:不用改模板。模板最后得出的是一个最小的范围了 只有两个数,对这个范围的小线段分情况讨论就行了,容易得一比。感觉对二分的理解更深了一点……

一刷报错:

  1. 是》,我只写了大于。太蠢了。
  2. 特殊情况里有数组为空的情况nums == null, 此时数组是空的,插入0
  3. 必须要有return -1的特殊情况了

风格上:

  1. while后要加空格阿T T
class Solution {    public int searchInsert(int[] nums, int target) {        if (nums == null || nums.length == 0) {            return 0;        }                int start;        int end;        int mid;                //search for a minimum range        start = 0;        end = nums.length - 1;        while(start + 1 < end) {            mid = start + (end - start) / 2;            if (nums[mid] == target) {                end = mid;            }            if (nums[mid] < target) {                start = mid;            }            if (nums[mid] > target) {                end = mid;            }        }                //find the position        if (nums[start] >= target) {            return start;        }        else if (nums[end] >= target) {            return end;        }        else if (nums[end] < target) {            return end+1;        }                return -1;    }}

 

转载于:https://www.cnblogs.com/immiao0319/p/7881709.html

你可能感兴趣的文章
Kafka学习笔记
查看>>
Octotree Chrome安装与使用方法
查看>>
用CALayer实现下载进度条控件
查看>>
Windows 环境下基于 Redis 的 Celery 任务调度模块的实现
查看>>
趣谈Java变量的可见性问题
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
ssm框架之将数据库的数据导入导出为excel文件
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
java string
查看>>
验证组件FluentValidation的使用示例
查看>>
0320-学习进度条
查看>>
JAVA跨域CORS
查看>>
正确的在循环list的时候删除list里面的元素
查看>>
ecshop安装常见问题及解决办法
查看>>
解决windows系统的oracle数据库不能启动ora-00119和ora-00130的问题
查看>>
ip相关问题解答
查看>>
Postman—添加断言和检查点
查看>>
MetaWeblog API Test
查看>>
反弹SHELL
查看>>
关闭Chrome浏览器的自动更新和升级提示
查看>>