[LeetCode][Java] Search Insert Position
2015-05-21 14:02
323 查看
题目:
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; } }
别人家的代码,好简单
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/awkward.gif)
:
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; } }
相关文章推荐
- leetcode解题之35#Search Insert Position Java版 递归和非递归实现
- [leetcode]35. Search Insert Position(Java)
- [LeetCode][Java] Search Insert Position
- Java [leetcode 35]Search Insert Position
- LeetCode 35 — Search Insert Position(C++ Java Python)
- [LeetCode-Java]35. Search Insert Position
- leetcode:Search Insert Position 【Java 】
- LeetCode 35 Search Insert Position (C,C++,Java,Python)
- Java for LeetCode 035 Search Insert Position
- Search Insert Position leetcode java
- 【LeetCode-面试算法经典-Java实现】【035-Search Insert Position(搜索插入位置)】
- Leetcode 35. Search Insert Position (Medium) (java)
- LeetCode(035) Search Insert Position (Java)
- 【Leetcode】Search Insert Position in JAVA
- [leetcode]35. Search Insert Position(java)
- Search Insert Position leetcode java
- [Leetcode] Search Insert Position (Java)
- [LeetCode]Search Insert Position (二分查找总结) Java Version
- LeetCode 35 -Search Insert Position ( JAVA )
- LeetCode : Search Insert Position [java]