• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[算法Rust,Go,Python,JS实现)]LeetCode之35-搜索插入位置

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

题目

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

你可以假设数组中无重复元素。

示例 1:

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

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

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

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

思路

方法一:利用二分法进行查找target
方法二:利用各个语言的内置函数,先插入在排序然后索引(这样做就失去了题目的意义了)

Rust实现

impl Solution {
    pub fn search_insert(nums: Vec<i32>, target: i32) -> i32 {
        let mut low = 0;
        let mut high = nums.len();
        while low < high {
            let mid = low + (high - low)/2;
            if nums[mid] < target {
                low = mid + 1;
            } else if nums[mid] > target {
                high = mid;
            } else {
                return  mid as i32;
            }
        }
        return low as i32;
    }
}

Go语言实现

func searchInsert(nums []int, target int) int {
	low := 0
	high := len(nums)
	for ;low<high; {
		mid := low + (high - low)/2
		if nums[mid] > target{
			high = mid
		} else if nums[mid] < target {
			low = mid + 1
		} else {
			return mid
		}
	}
	return low
}

Python实现

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        low = 0
        high = len(nums)
        while low < high:
            mid = int(low + (high - low)/2)
            if nums[mid] > target:
                high = mid
            elif nums[mid] < target:
                low = mid +1
            else:
                return mid
        return low
  

JavaScript实现

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var searchInsert = function(nums, target) {
    let low = 0
    let high = nums.length
    while (low < high){
        let mid = parseInt(low + (high-low)/2)
        if (nums[mid] < target){
            low = mid +1
        } else if (nums[mid] > target){
            high = mid
        } else {
            return mid
        }
    }
    return low
};

结果

源码下载地址:

源码下载地址


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap