35. Search Insert Position
2016-07-28 00:32
302 查看
题目:
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples.
代码:
第一反应,遍历了一遍:
public int searchInsert(int[] nums, int target) {
int result =0;
for (int i = 0 ; i < nums.length ; i++)
{
if (target <= nums[i])
{
result = i;
break;
}
else
{
result=i+1;
}
}
return result;
}
网上查了一下,发现二分法,算法复杂度会减少不少,尤其在较大的数据量:
int searchInsert_mid(int[] nums, int target) {
int low = 0, high = nums.length-1;
while(low <= high) {
int mid = (low+high)>>1;
if(nums[mid] == target)
return mid;
else if(nums[mid] > target)
high = mid-1;
else
low = mid+1;
}
if(high < 0) return 0;
if(low >= nums.length) return nums.length;
return low;
}
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples.
[1,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0
代码:
第一反应,遍历了一遍:
public int searchInsert(int[] nums, int target) {
int result =0;
for (int i = 0 ; i < nums.length ; i++)
{
if (target <= nums[i])
{
result = i;
break;
}
else
{
result=i+1;
}
}
return result;
}
网上查了一下,发现二分法,算法复杂度会减少不少,尤其在较大的数据量:
int searchInsert_mid(int[] nums, int target) {
int low = 0, high = nums.length-1;
while(low <= high) {
int mid = (low+high)>>1;
if(nums[mid] == target)
return mid;
else if(nums[mid] > target)
high = mid-1;
else
low = mid+1;
}
if(high < 0) return 0;
if(low >= nums.length) return nums.length;
return low;
}
相关文章推荐
- 【Codeforces自我陶醉水题篇~】(差17C code....)
- 一点一点学maven(02)——手动构建maven项目之helloworld及常用命令使用
- 【例题】【拓扑排序】NKOJ 3731 wjj的排列序列
- VB几种函数参数传递方法,Variant,数组,Optional,ParamArray
- GC算法与内存回收
- 页面的缓存与不缓存设置
- 趣图展现程序员职业生涯的11个阶段
- IllegalStateException异常处理
- android开发仿ios的UIScrollView
- 最小的k个数
- MySQL读写分离介绍
- 第4课 Go数组Array和切片Slice
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(八)-- 多环境开发
- 小白写"半同步半异步"服务器模型踩坑实录(2)
- HDU1847之SG值
- 浅谈操作系统对内存的管理
- 使用reflux进行react组件之间的通信
- 求每门课的第一名的简单sql语句
- Codeforces 670D2:Magic Powder - 2(二分)
- POJ 2823 Sliding Windows(单调队列)