35. 搜索插入位置(Swift版)

一、题目

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

二、解题

方法一:
直接遍历(searchInsert())
时间复杂度:O(n)。空间复杂度:O(1)。
方法二:
用二分法(searchInsert1())
时间复杂度:O(log(n))。空间复杂度:O(1)。

实际在LeetCode上运行测试用例,方法一和方法二执行时间差不多,想来应该是测试用例数据量比较小的原因。

三、代码实现

    class Solution {

        func searchInsert(_ nums: [Int], _ target: Int) -> Int {
            for (index, n) in nums.enumerated() {
                if n >= target {
                    return index
                }
            }
            return nums.count
        }
        func searchInsert1(_ nums: [Int], _ target: Int) -> Int {
            var low = 0
            var high = nums.count
            var mid = 0
            
            while low < high {
                mid = (high + low) / 2
                if nums[mid] > target {
                    high = mid
                }else if nums[mid] < target {
                    low = mid + 1
                }else{
                    return mid
                }
            }
            return low
        }
    }

Demo地址:github

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 1,113评论 0 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,159评论 1 32
  • 她是谁? 她被誉为“音乐外交官” 40余位外国元首聆听过她的琴声 她是美国斯坦福大学首位艺术访问学者 美国苹果公司...
    惑者沈阅读 597评论 0 1
  • 爸爸:你们见着我的医保卡了吗?我记得放在了一个挺保险的地方,找不到了。 妈妈:你以后放东西告诉我们一声,帮你记着点...
    峰树燕阅读 215评论 0 1