zoukankan      html  css  js  c++  java
  • leetcode刷题笔记三十五 搜索插入位置

    leetcode刷题笔记三十五 搜索插入位置

    源地址:35. 搜索插入位置

    问题描述:

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

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

    示例 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

    代码补充:

    //本题较为简单,从左向右遍历 找到插入位置
    //或者可以将该元素与数组合并,使用排序方法,再返回位置
    //时间复杂度基本是O(n)
    object Solution {
        def searchInsert(nums: Array[Int], target: Int): Int = {
            var left = 0
            val right = nums.length - 1
            if (nums(left) >  target) return 0
            if (nums(right) < target) return right+1
            while(nums(left) < target) left += 1
            println(left)
            return left  
        }
    }
    
    //或者使用二分法,这么复杂度更低
    object Solution {
        def searchInsert(nums: Array[Int], target: Int): Int = {
            def binarySearch(left:Int, right:Int):Int = {
                if (left > right)   left
                else{
                    val mid = (left + right)/2
                    if (nums(mid) < target) binarySearch(mid+1, right)
                    else binarySearch(left,mid-1)
                }
            }
    
            binarySearch(0, nums.length-1)
        }
    }
    
  • 相关阅读:
    STL_string容器
    STL简介
    C++文件输入输出
    Qfile22
    QFile111
    v-model原理
    Scrum敏捷软件开发方法
    大神讲故事:微服务及相关技术,很生动,另附ws和restful区别
    js异步请求方法
    SQL Server中char、varchar、text和nchar、nvarchar、ntext的区别 (转)
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/12873487.html
Copyright © 2011-2022 走看看