| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> LeetCode——Weekly Contest 312 -> 正文阅读 |
|
[数据结构与算法]LeetCode——Weekly Contest 312 |
LeetCode周赛第312场记录 6188. 按身高排序(读题写代码)这道题纯按照题意写代码,没有难度,此处从略。 6189. 按位与最大的最长子数组(脑筋急转弯)
所以只需要执行两次遍历即可,第一次在于找出数组中的最大元素,第二次对最大元素的连续序列长度进行计数,返回最大长度即可。
这种题出在竞赛里,想出来就可以立刻AC,没有成功地将题意进行转化就会很费时间。 6190. 找到所有好下标(动态规划)一个数满足好下标必须保证它的左边连续k个元素是非递增的,右边连续k个元素是非递减的。 那么一个朴素的想法就是遍历这个数组,并在其中挨个记录其左边和右边分别满足要求的元素个数,如果两者都满足,那么这个位置就是一个好下标,因为要求是连续的元素,所以这里需要记录之前的状态,因而可以使用动态规划的的思路来求解。 完整的AC代码如下:
2421. 好路径的数目(并查集)这里的代码参考的是灵茶山艾府大佬的题解,首先在此做版权声明。 这里就是从大佬的代码里学习一些思路和技巧了,首先给出完整的AC代码:
思路上不再赘述,对于我这样的算法小白来说还是过于高超了,我根本想不到会使用并查集来解这道题。这道题中并查集中每个集合以数值最大的节点作为父亲节点,值从小到大地遍历所有节点。另外一个相对费解的点就是,UnionSize[x]记录的是当前集合中值为val[x]的个数,当从小到大遍历时记录的也就是当前集合中最大节点值的数量。因为一条好路径,它的两个端点一定是当前集合中的最大元素,否则不能满足中间所有节点数值都小于等于端节点的要求。 这段代码还有以下的学习点: 1.注意lambda表达式的使用和线段树的模板以及function函数对象,写的非常好。 2.注意函数iota用于使用连续递增序列值初始化连续空间。 3.在排序vals时,没有直接对vals进行排序,这是因为不能破坏vals的原始序列。这份代码中将各个元素的索引下标提取出来形成ID,对ID进行sort然后去索引原数组,这种做法非常聪明。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/25 19:35:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |