博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构与算法:排序+二分查找
阅读量:5168 次
发布时间:2019-06-13

本文共 1506 字,大约阅读时间需要 5 分钟。

【排序】

  1. 实现归并排序、快速排序、插入排序、冒泡排序、选择排序、堆排序(选做)(完成leetcode上的返回滑动窗口中的最大值(239),这是上一期第三天的任务进行保留(涉及队列可以对第二天进行整理复习))
  2. 编程实现 O(n) 时间复杂度内找到一组数据的第 K 大元素

  练习:

  滑动窗口最大值

  思路:1暴力法 2双端队列

class Solution:    def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:        '''        #暴力法        if nums==[]:            return []        n=len(nums)        res=[]        for i in range(n-k+1):            window=nums[i:i+k]            res.append(max(window))        return res         if not nums or k == 0:            return []        if k == 1:            return nums        '''        #双端队列        if nums == [] or k == 0:            return []        if k == 1:            return nums        #队列里保存可能是最大值的索引        queue = [0]        # 存放窗口中最大值        res = []        for i in range(1,len(nums)):            #判断队首对应的元素是否已经滑出窗口            if i-queue[0] >= k:                queue.pop(0)            #保证当前最大值的索引是第一个。遇到一个新数时,将它与队尾元素比较,如果大于队尾元素,则丢掉队尾元素,继续重复比较,直到新数小于队尾元素,或者队列为空为止,将新数下标放入队列            while queue and nums[queue[-1]] < nums[i]:                queue.pop()            queue.append(i)            if i >= k-1:                res.append(nums[queue[0]])        return res

 

【二分查找】

  1. 实现一个有序数组的二分查找算法
  2. 实现模糊二分查找算法(比如大于等于给定值的第一个元素)

  练习:

  x 的平方根

  思路:二分法

class Solution:    def mySqrt(self, x: int) -> int:        low=0        high=x        while low<=high:            mid=(low+high)//2            if mid**2==x:                return mid            elif mid**2

 

转载于:https://www.cnblogs.com/deeplearning-man/p/10884741.html

你可能感兴趣的文章
面试时被问到的问题
查看>>
注解小结
查看>>
201421410014蒋佳奇
查看>>
Xcode5和ObjC新特性
查看>>
CSS属性值currentColor
查看>>
Real-Time Rendering 笔记
查看>>
多路复用
查看>>
【UVA】434-Matty&#39;s Blocks
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
有关快速幂取模
查看>>