Leetcode---35. 搜索插入位置 Java实现

本文介绍了一种在已排序数组中查找特定目标值的方法,包括两种主要算法:线性搜索和二分查找。线性搜索通过遍历数组确定目标值的位置或插入点,而二分查找则更高效,适用于大型数据集,通过不断缩小搜索范围直至找到目标或确定插入位置。

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

eg1:[1,3,5,6], 5             输出: 2
eg2:[1,3,5,6], 2             输出: 1

方法一:将要比较的值的位置分为三种情况,分别为:比数组最小值小,比数组最大值大,在数组中

public class Solution {
	public static void main(String[] args) {
		int[] nums ={1,3,5,6};
		int target = 2;
		Solution s = new Solution();
		System.out.println(s.searchInsert(nums, target));
	}
	public int searchInsert(int[] nums, int target) {
		for(int i=0;i<nums.length;i++){
			if(nums[i]==target){
				return i;
			}
			if(nums[nums.length -1]!=target && target>nums[nums.length -1])  return nums.length;
			if(nums[nums.length -1]!=target && target<nums[0]) return 0;
			if(nums[nums.length -1]!=target && nums[i]<target && nums[i+1]>target) return i+1;
		}
		return target;
        
    }
}

方法二:二分查找;

class Solution {
	public static void main(String[] args) {
		int[] nums ={1,3,5,6};
		int target = 7;
		Solution s = new Solution();
		System.out.println(s.searchInsert(nums, target));
	}
    public int searchInsert(int[] nums, int target) {
        if(nums == null || nums.length < 1)  return 0;
        int low = 0;
        int high = nums.length-1;
        int mid = 0;
        while(low<=high){
        	mid = low + (high-low)/2;
        	if(nums[mid] == target){
        		return mid;
        	}
        	if(nums[mid] < target ){
        		low = mid+1;
        	}else{
        		high = mid-1;
        	}
        }
        
        return low;
    }
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值