LeetCode_C
算法学习记录
Zccccccc_tz
这个作者很懒,什么都没留下…
展开
-
面试题 04.06. 后继者
题目: 设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。 如果指定节点没有对应的“下一个”节点,则返回null。 思路: 实际上是否为搜索树不是很要紧,对树进行中序遍历即可。利用了两个全局变量,一个用来判断是否已经找到指定节点(简单讲就是一个标志位),另一个变量来记录返回的节点指针。讲起来简单,实际还是有些坑的(先贴代码)。 代码: int flag = 0; stru...原创 2020-05-03 19:54:23 · 210 阅读 · 0 评论 -
23.合并K个排序链表
题目: 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 思路: 同时处理多个链表很复杂,但处理两个链表很简单,用递归即可解决。所以可以把问题转换为解决多个子问题:...原创 2020-04-26 10:50:15 · 129 阅读 · 0 评论 -
257.二叉树所有路径
题目: 给定一个二叉树,返回所有从根节点到叶子节点的路径。 题目很短。 示例: 思路: 思路很简单,用DFS遍历所有节点,遇到子叶时,结束然后添加字符到输出中去。(一开始没有考虑到数字的位数和正负情况) 其余情况和**22.括号生成**类似(就是处理字符串数组的方式相同,而且都是用DFS进行遍历)。 代码: // 将数字转换为字符(处理正负及多位字符) void copyNum2Str (c...原创 2020-04-15 23:08:00 · 158 阅读 · 0 评论 -
486.预测赢家
题目: 给定一个表示分数的非负整数数组。 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,……。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。 给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。 思路: 第一反应可以用dp处理,一开始写...原创 2020-04-13 22:53:44 · 243 阅读 · 0 评论 -
994.腐烂的橘子
题目: 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。 返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。 这题竟然是简单(狗头)。 **思路:**用BFS处理 先将所以的烂橘子放入一个队列中,存储他的坐...原创 2020-04-09 17:16:46 · 186 阅读 · 0 评论 -
22.括号生成
题目: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 思路:用DFS处理,如下图(画的有点丑) 处理的所有情况为: 没有括号余量。 左括号有余:添加左括号。 右括号有余且已用左括号数 > 右括号个数:添加右括号。 代码: /** * Note: The returned array must be malloced, assume c...原创 2020-04-09 17:02:48 · 156 阅读 · 0 评论