| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> leetcode_215 -> 正文阅读 |
|
[数据结构与算法]leetcode_215 |
215.数组中的第K个最大元素
Eg1:
Eg2:
notes:
解题思路这道题刚拿到手,看到难度竟然是一道中等题目 但为了给这道题一点面子。。这里会用到三种方法来解决这个看似非常简单的问题 解题是主要的,但是我们也不能忽视了效率问题,所以最后会好好地总结一下这三个方法的优良差异 1. 直接暴力排序就像刚刚说的,直接用 因为 所以最后返回的应该是下标为 代码如下:
2. 建堆有一个同样在 思路:既然我们要找的是第 想清楚了这个思路,这道题就可以解了XD
3. 建堆(优化)这里其实严格意义来说不能说算是优化,只是说对待不同的情况,这两种方法都得去考虑到 之前学堆的时候看到过一个问题,关于如何海量信息处理 这道题其实还好,题目给的例子都非常的温柔。 但如果让你从 要知道建堆一次的时间复杂度为 这样就衍生出第三种方法: 既然是海量数据,考虑到我们的问题就是建 思路:我们先建立一个 具体代码如下:
复杂度分析:1.第一个办法太简单粗暴了 2.第二个方法要计算时间复杂度的话,我们得先知道 建堆的时间复杂度为: 向下调整算法为: 这里可以直接看我的blog 那么我们计算一下: 加起来就是 第二种方法不仅仅是时间复杂度上面的问题,还同时要考虑空间复杂度。 这里建了一个 3.第三个方法也不难计算 我们这里的 这样时间复杂度就为 而空间复杂度为 分析这样一来我们就不去考虑第一种的方法了,只看第二和第三种。 当 但是相差大的时候,时间复杂度还好,空咋复杂度就拉开很大的差距了,一个只需要建立 这就是第三个方法为啥是最优的! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 3:43:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |