leetcode之Search Insert Position

本文讨论了如何利用二分法解决在有序数组中查找特定元素的问题,并详细解释了算法实现及其优化。通过全面考虑边界情况,作者提供了一个高效且易于理解的解决方案。

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

拿到这道题之后,首先第一反应是用二分法,因为是在有序数组中查找某个元素的位置。

根据题目给出的测试用例,非常全的考虑了边界的情况等。这道题一遍编译通过,我也很奇怪。只是有一点不是很明白的地方在于,我的每一个判断语句中有return了,为什么整个函数最后还要加一个return,最后的这个return是返回的什么?不是很清楚。 

下面附上我的代码,运行时间有点长

public class Solution {
    public int searchInsert(int[] A, int target) {
        int result = 0;
        int length = A.length;
        int low = 0;
        int high = length-1;
        while(low<high){
        	int mid = (high+low)/2;
        	if(A[mid]<target){
        		low = mid+1;
        	}
        	else{
        		if(A[mid]>target){
            		high = mid-1;
            	}
        		else{
        			result = mid;
        			return result;
        		}
        	} 
        }
        if(A[low]<target){
        	result = high + 1;
        	return result;
        }
        if(A[low]>target){
        	result = low;
        	return result;
        }
		return low;
       
    }
}

  

转载于:https://www.cnblogs.com/gracyandjohn/p/4402747.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值