[LeetCode][Java] Search Insert Position
来源:互联网 发布:数控铣床编程创意图案 编辑:程序博客网 时间:2024/05/17 03:13
题目:
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 class Solution { public int searchInsert(int[] nums, int target) { int startindex; int endindex; if (nums.length==0) return 0; if (nums.length==1 ) { if(target>nums[0]) return 1; else return 0; } startindex=0; endindex=nums.length-1;return search(nums, target, startindex,endindex); }private static int search(int[] nums, int target, int startindex, int endindex){ int finalindex; int midindex; if(target>nums[startindex]&&target<nums[endindex]&&endindex-startindex==1) return endindex; if(startindex==endindex) { if(target<nums[startindex]) return startindex; else if(target>nums[endindex]) return endindex+1; } if(endindex-startindex==1) { if (target>nums[startindex]) midindex=endindex; else midindex=startindex; } else midindex=(startindex+endindex)/2;if (target>nums[midindex]) { startindex=midindex; if(startindex<0) startindex=0; else if(startindex>=nums.length) startindex=nums.length-1; finalindex=search(nums, target,startindex,endindex); } else if(target<nums[midindex]) { endindex=midindex; if(endindex<0) endindex=0; else if(endindex>=nums.length) endindex=nums.length-1; finalindex=search(nums, target,startindex,endindex); } else return midindex;return finalindex;}}
别人家的代码,好简单:
public class Solution { public int searchInsert(int[] A, int target) { int i = 0; int j = A.length - 1; while (i <= j) { int mid = (int)((i + j)/2); if (A[mid] == target) { return mid; } else if (A[mid] > target) { j = mid - 1; } else { i = mid + 1; } } return i; }}
0 0
- [Leetcode] Search Insert Position (Java)
- [LeetCode][Java] Search Insert Position
- [LeetCode][Java] Search Insert Position
- leetcode:Search Insert Position 【Java 】
- LeetCode : Search Insert Position [java]
- Search Insert Position leetcode java
- LeetCode: Search Insert Position
- LeetCode Search Insert Position
- [Leetcode] Search Insert Position
- LeetCode : Search Insert Position
- [LeetCode] Search Insert Position
- [Leetcode] Search Insert Position
- [LeetCode]Search Insert Position
- [LeetCode] Search Insert Position
- LeetCode-Search Insert Position
- LeetCode - Search Insert Position
- LeetCode | Search Insert Position
- Leetcode: Search Insert Position
- [漂浮法]POJ2528 Mayor's posters
- mysql语句优化
- [征稿啦]2015 IEEE先进信息技术、电子与自动化控制会议 (2015 IAEAC)
- bzoj 1588 splay入门题 (插入,查询)
- JSP的执行过程\JSP的隐式对象
- [LeetCode][Java] Search Insert Position
- linux shell route命令
- weak/strong创建控件的区别
- Robot Framework Advanced Guider from twiki.cern.ch
- perf
- 软负载与nginx那些强大的不可不说的功能(1)
- servlet是单例的 所以需要线程安全 以及如何实现线程安全
- 深度分析ORACLE热点块问题
- JAVA运行环境下载、安装和设置(Windows7)