查找

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

给定一个排序好的数组,对其进行查找,这里我使用了两种方法,第一种是暴力查找,对数组进行顺序遍历,时间复杂度为O(n),第二种是二分查找,时间复杂度是O(lgn)

  • 暴力查找
def searchInsert(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
     
        index = 0
        while index < len(nums):
            if target > nums[index]:
                index += 1
            else:
                return index
        return len(nums)
        
  • 二分查找
def searchInsert(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        left = 0
        right = len(nums)
        while left < right:
            mid = int((left + right) / 2)
            if nums[mid] > target:
                right = mid
            elif nums[mid] < target:
                left = mid + 1
            else:
                return mid
        return left

二分查找的思想是每次都从数组的中间开始查找,若小于则去左半部分

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

推荐阅读更多精彩内容

  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 5,165评论 0 12
  • 1. 链表 链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,...
    Mr希灵阅读 1,472评论 0 20
  • 原文出处:http://www.cnblogs.com/maybe2030/p/4715035.html引文出处:...
    明教de教主阅读 9,220评论 0 7
  • 今天继续学习ug里面的技能,主要是翻转,感觉很好,超级喜欢这个专业,打算课后弄一些关于机械专业课的书,好...
    泡面小佳阅读 152评论 0 1
  • 时间匆匆经过三十三年,某一天学会了怀念。常常看自己以前的照片,想想过往的趣事,回味的曾经,展望周而复始的未来。很多...
    废墟里的鱼阅读 330评论 0 0