leetcode面试150
香菜大丸
26届cpp/go选手
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcoode 202. 快乐数
可以看到while循环条件是fast!=1,由于1转换后还是1,所以当转换一次到1的情况也能通过。数字转换我们可以使用递归实现,退出无线循环则使用快慢指针(解决链表环)题目重点:数字的转换,无限循环的避免。编写一个算法来判断一个数。原创 2024-12-09 21:44:51 · 285 阅读 · 0 评论 -
leetcode 23. 合并 K 个升序链表
首先我们想到的是归并排序,对链表数组不断进行分割然后合并分割的链表。给你一个链表数组,每个链表都已经按升序排列。将它们合并到一个有序链表中得到。原创 2024-12-03 16:50:17 · 432 阅读 · 0 评论 -
leetcode 212. 单词搜索 II
给定一个m x n二维字符网格board和一个单词(字符串)列表words返回所有二维网格上的单词。单词必须按照字母顺序,通过内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。这里我们需要在字符表中查找words中的单词,如果我们暴力搜索,然后再去检验的化,效率很低,并且每个点都需要搜索所以行不通这里我们直接建立words的Trie 然后dfs 建立的Trie 大大减少了dfs的范围。原创 2024-11-25 23:25:20 · 371 阅读 · 0 评论 -
leetcode 208. 实现 Trie (前缀树)
(发音类似 "try")或者说是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。原创 2024-11-24 16:45:01 · 480 阅读 · 0 评论 -
leetcode 面试150之 156.LUR 缓存
这里我们如果缓存满了还得删除最久未使用关键字 ,所以我们得维护一个O(1)寻找并且O(1)维护“使用队列”,数组我们无法实现O(1)删除,而双向链表能实现O(1)删除,但是无法实现O(1)查询。所以我们这里用到了unordered_map映射为listnode*,通过map去实现O(1)查询。起初我并未想到用双向链表而是用deque去维护“使用队列”,后者在维护队列无法做到O(1),包超时的。而listnode*双向链表实现O(1)删除。题目重点:O(1)实现查找和删除。原创 2024-11-21 22:42:39 · 627 阅读 · 0 评论 -
leetcode 25. K 个一组翻转链表
很简单,我们头插法获得反转的链表即可,然后链接每一个反转的链表即可。是一个正整数,它的值小于或等于链表的长度。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。的整数倍,那么请将最后剩余的节点保持原有顺序。原创 2024-11-20 22:41:07 · 413 阅读 · 0 评论 -
leetcode 面试150 之随机链表的复制
难点在于如何找到新节点的随机节点,我试过用map<int,Node*>来管理,发现有重复val值就行不通了。指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。节点组成,其中每个新节点的值都设为其对应的原节点的值。题解还有一篇递归的解法,雀氏很nb感兴趣的可以去看看。的链表,每个节点包含一个额外增加的随机指针。,该指针可以指向链表中的任何节点或空节点。题目重点:深拷贝,链表状态相同。原创 2024-11-19 20:26:31 · 386 阅读 · 0 评论 -
leetcode 面试150之 Z 字形变换
这里我们可以准备一个数组然后按照规律数组去插入相应的stirng对象。这里我们可以准备numRows个string对象来接受s中的字符。,以从上往下、从左到右进行 Z 字形排列。5行:0 1 2 3 4 3 2 1。4行:0 1 2 3 2 1。可以看到上述例子的插入规律是。3行:0 1 2 1。原创 2024-11-18 21:27:00 · 401 阅读 · 0 评论 -
leetcode 面试150之 无重复字符最长字串
这里无重复我们使用unordered_set<char>通过滑动窗口去实现一个时间为O(N)算法。题目要点:无重复且连续字串。原创 2024-11-18 21:15:21 · 130 阅读 · 0 评论 -
leetcode面试 150题之 三数之和 复刷日记
这里我们选择了一个值后 再去通过双指针找与该值到和为0的二元组,这里的去重就简单了,已经固定了一个值,这里的二元组只要有一个和之前的相等则指针相应的++或者--直到找不到二元组和固定值为相反数为止。然后我尝试只固定一个值,因为上面的 -4 -2 -2 0 2 2 4 中就是因为我锁定l,r导致无论是l++,还是r--都会丢掉一个解。这里代码只能处理一半的数据 当遇到 -4 -2 -2 0 2 2 4时就漏情况了,而且处理起来非常麻烦。我先想到的是双指针固定两个数然后二分找第三个数(有点想当然)原创 2024-11-13 21:32:46 · 282 阅读 · 0 评论
分享