leetcode35 search insert position

本文详细解析了二分查找算法的原理及应用,通过一个排好序的数组和目标值,介绍了如何使用二分法快速定位目标值或其应插入的位置。文章对比了Java与Python两种语言实现该算法的代码量,展示了不同语言的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

断更很久,也说明了我很久没做题。本来就生疏,结果久更加生疏了,没事,新学期的开始,也意味着要继续努力啦,加油加油。
题意解析:给出一个排好序的数组和target值,在数组中找到这个target值,并返回下标,如果找不到,就返回这个target在这个排好序的数组的应在的位置
思路:使用二分法。二分法的意思是,将一段空间分成两段,用中间点与target比较,如果target小于中间点,那么确定target在左边这一块,则可以舍弃右边的这一块,接着左边的1/2在继续分下去,直到找到target或者target适合插入的下标为止。比起直接遍历,少掉很多步骤,空间复杂度也不会很多。但是有俩点需要注意是的:1,当target的值比右边的末端还大时,那么就要返回末端的下标+1;2,当target的值比左边的还小时,那么就要返回左边的下标0。
Java代码如下:

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

关于python的代码如下:

def searchInsert(self,nums,target)
	if target>nums[len(nums)-1]:
		return len(nums)
	for i in range(len(nums)):
		if nums[i]>=target:
			return i

关于python的代码里量和Java的代码量,在某些很简单的题目的,python的代码量是明显比Java的少的,但是在复杂的题目中,明显Java的代码量是比较少的。这个是没有确定谁一定比谁少的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值