随笔分类 - leetcode-算法
摘要:今天想复习一下AVL树和红黑树,想写出来,没想到太难了,我太难了 :( AVL树的左旋:左节点成为根,右节点接管原根节点,原根节点接管左节点的右节点。 只写了AVL树的插入: template <typename T> class AVLNode { public: T value; AVLNode
阅读全文
摘要:因为时间不够,所以刷的每一题leetcode都不详细写解释了。 现在都把刷过的题放在git上: https://github.com/manch1n/leetcode
阅读全文
摘要:题目: 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 示例: 给定二叉树 [3,9,20,null,null,15,7], 返回它的最大深度 3 。 思路: 简单递归。
阅读全文
摘要:题目: 给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例: 示例 1: 示例 2: 示例 3: 思路: 用一个vector保留出现节点指针的次数就完事了。 进阶一点
阅读全文
摘要:题目: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 思路: 感冒加上鼻炎,又有点头晕,30分钟才做完。这道简单题其实就是分类讨论,还要注意保留头节点的指针保留可以返回。
阅读全文
摘要:题目: 反转一个单链表。 示例: 思路: 这道题比较经典,可以用递归与循环做。先说循环的:双指针加一个保留指针,轻松搞定。 递归的有点难想呢。https://www.cnblogs.com/kubixuesheng/p/4394509.html
阅读全文
摘要:题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 思路: 浅显的思路就是遍历一遍取长度,然后再遍历一遍找到位置删除,然而这里要遍历两次,虽然时间复杂度为O(n)。进阶的想法是使用双指针,对的,又是双指针,只要保证两个指针的间隔为n,之后让前一个指针一直到末尾,两个指
阅读全文
摘要:题目: 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例: 示例 1: 示例 2: 思路: 这个其实就是插入排序的一趟,需要注意的是要找出被删除节点的前一个节点。使其的下一个指针域为
阅读全文
摘要:题目: 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例: 示例 1: 示例 2: 思路: 先找出最小长度的,然后每个字符串匹配。O(n)
阅读全文
摘要:题目: 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下: 1 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" ("一个二" , "一个一") , 即 1
阅读全文
摘要:题目: 实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例: 示例 1: 示例 2: 说明: 当 needle 是空字符串时,我们应当返
阅读全文
摘要:题目: 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 示例: 示例 1: 示例 2: 思路: 先把字符串转小写,然后使用双指针。、
阅读全文
摘要:题目: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 示例: 示例 1: 示例 2: 思路: 字符串类题桶是必须要熟悉的。这题也一样简单。
阅读全文
摘要:题目: 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 示例:(只包含小写字符) 思路: 用一个桶来保存出现的次数,在遍历一遍即可。
阅读全文
摘要:题目: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例: 示例 1: 示例 2: 示例 3: 思路: 先统计出长度,然后根据位数乘相应的权。如下: 简介的做法:
阅读全文
摘要:题目: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例: 输入:["h","e","l
阅读全文
摘要:题目: 给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。 示例: 思路: 这道题我实在是想不出来,查了一下数学原理:上下翻转,沿对称轴变换即可,如下:
阅读全文
摘要:题目: 判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 上图是一个部分填充的有效的数独。 数独部分空格内已填入了数字,空白格用 '.' 表示。 示例: 输入: [ ["8","3",".",".","7",".",".",".","."] , ["6","."
阅读全文
摘要:题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为
阅读全文
摘要:题目: 给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 思路: 典型的双指针题目,用一个指针找到0,用另一个指针找到非零,两者交换,同时保证非零的指针较小。 时间复杂度为O(n),看
阅读全文
浙公网安备 33010602011771号