Leetcode ---35. 搜索插入位置 (数组)

35. 搜索插入位置

  • 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
  • 你可以假设数组中无重复元素。

示例1:

输入: [1,3,5,6], 5
输出: 2

示例2:

输入: [1,3,5,6], 2
输出: 1

示例3:

输入: [1,3,5,6], 7
输出: 4

JAVA

思路1:

  1. 如果目标值(严格)大于排序数组的最后一个数,返回这个排序数组的长度,否则进入第 2 点。
  2. 返回排序数组从左到右,大于或者等于目标值的第 1 个数的索引。
class Solution {    
    public int searchInsert(int[] nums, int target) {        
       for(int i =0;i<nums.length;i++){            
           if(nums[i]>=target){                
                return i;            
           }        
      }       
    return nums.length;     
    }
}

思路2:

  1. 利用二分法查找
class Solution {
    public int searchInsert(int[] nums, int target) {
      int i = nums.length;
      if (nums[i -1] < target){
          return i;
      }
      int left = 0;
      int right = nums.length-1;
      while(left <= right){
          int mid = (left + right)/2;
          if (nums[mid] == target){
              return mid;
          }
          else if (nums[mid] < target){
              left = mid + 1;
          }
          else{
              right =  mid -1;
          }      
      }
     // 对于 [1,3,5,6],target = 2,返回大于等于 target 的第 1 个数的索引,此时应该返回 1
     //在上面的 while (left <= right) 退出循环以后,right < left,right = 0 ,left = 1
    // 根据题意应该返回 left
      return left;
    }
}

Python

思路3:

  1. 利用列表中的index、append以及sort来找出位置
class Solution:    
   def searchInsert(self, nums: List[int], target: int) -> int:        
       if target in nums:            
           return nums.index(target)        
       else:            
           nums.append(target)            
           nums.sort()            
           return nums.index(target)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值