![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode刷题笔记
文章平均质量分 50
小肥羊的慢慢科研路
希望这里能见证我的慢慢科研路
展开
-
有效IP问题 (leetcode--递归篇)
问题描述:给定一个只包含数字的字符串,通过返回所有可能的有效IP地址组合来恢复它。例如:给定“25525511135”,返回["255.255.11.135","255.255.111.35"]。(顺序并不重要)解题思路:找规律:有效IP地址的条件有1、每段地址均小于等于255; 2、共有四段地址递归方法:取某段的地址,可能是1位、2位、3位判断第一段地址是否有效,若有效,取下一段地址将某段地址与...原创 2018-07-01 15:19:26 · 2364 阅读 · 0 评论 -
升序链表转换成二叉搜索树(BST)
题目描述给定一个按升序排序的单链列表,将其转换为高度平衡的BST。解题思路关键点:二叉搜索树的中序遍历是升序的(1)快慢指针找到链表中点,作为根节点(2)递归链表的左半部分为左子树(3)递归链表的右半部分为右子树代码示例class Solution {public: TreeNode *sortedListToBST(ListNode *head) { return sorte...原创 2018-07-05 09:46:17 · 512 阅读 · 0 评论 -
链表反转(从m位置到n位置)
题目描述将一个链表从m位置反向到n,并在一个通道内完成。例如:给定1 - > 2 - > 3 - > 4 - > 5 - > NULL,m = 2和n = 4返回1 - > 4 - > 3 - > 2 - > 5 - > NULL注意:给定m, n满足以下条件:1 ≤ m ≤ n ≤ 链表长度解题思路(1)找到m位置的节点和m位置的前置节...原创 2018-07-05 16:26:57 · 4725 阅读 · 0 评论 -
链表分区问题
题目描述给定一个链表和一个值x,对它进行分区,使小于x的所有节点都先于大于或等于x的节点。例如,给定1 - > 4 - > 3 - > 2 - > 5 - > 2和x = 3返回1 - > 2 - > 2 - > 4 - > 3 - > 5解题思路新建两个链表,分别存储小于x的节点和大于等于x的节点代码示例class Solution {...原创 2018-07-05 22:00:40 · 445 阅读 · 0 评论 -
字符串是否回文
题目描述Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.For example,"A man, a plan, a canal: Panama"is a palindrome."race a car"is not a palind...原创 2018-07-13 10:24:05 · 115 阅读 · 0 评论 -
赛道加油过程 贪心
题目描述There are N gas stations along a circular route, where the amount of gas at station i isgas[i].You have a car with an unlimited gas tank and it costscost[i]of gas to travel from station i to its n...原创 2018-07-13 15:06:14 · 146 阅读 · 0 评论 -
求子序列和最大问题
问题描述在数组中找到相邻的子数组(至少包含一个数字),它的总和是最大的。例如,考虑到array[2−1−3、4、−1,2,1−5,4],连续的子数组[4, -1, 2, 1]有最大的和=6。解题思路1、从头开始累加,直到和为负。此时前面这段不能给后面的串带来正收益,应舍弃,sum清零2、然后在开始统计最大的sum.代码示例class Solution {pub...原创 2018-07-25 10:55:39 · 117 阅读 · 0 评论 -
跳跳游戏
好疲惫呀,感觉做不动了,需要一些鼓励题目描述Given an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that positi...原创 2018-07-13 21:27:13 · 425 阅读 · 0 评论 -
跳跳游戏2
题目描述给出一个非负整数数组,你最初定位在第一个数组的索引。数组中的每个元素代表您在该位置的最大跳跃长度。你的目标是在最小的跳跃次数中达到最后一个索引。例如:给定数组A=[2,3,1,1,4],到达最后一个索引的最小跳数是2。(从索引0到1,再到最后一个索引的3步。)解题思路设置变量last、cur,last表示每个台阶内最远去的地方,cur表示每一步直接能跨越的最远距离设置变量s...原创 2018-07-25 15:19:31 · 207 阅读 · 0 评论 -
打印杨辉三角/帕斯卡三角问题
问题描述Given numRows, generate the first numRows of Pascal's triangle.For example, given numRows = 5,Return[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]解题思路杨辉三角形的规律是,每一行的每一个值...原创 2018-07-26 16:00:48 · 201 阅读 · 0 评论 -
不使用乘法、除法和模运算符来除两个整数
题目描述不使用乘法、除法和模运算符来除两个整数。解题思路注意:此题操作对象为两个整数,不是两个正整数,因此要对符号进行判断基本解法:对被除数循环减除数,问题:算法效率不高,当被除数很大,除数很小时,效率会非常低。改进解法:每次循环递减时,将递减数翻倍,这样算法效率能够得到极大优化代码示例class Solution { public: int divide(i...原创 2018-07-28 13:43:53 · 1125 阅读 · 0 评论 -
二叉树前序遍历
题目描述Given a binary tree, return the preordertraversal of its nodes' values.For example:Given binary tree{1,#,2,3}, 1 \ 2 / 3return[1,2,3].Note: Recursive solution is tri...原创 2018-07-28 13:48:11 · 265 阅读 · 0 评论 -
复杂链表的深度拷贝
题目描述给出一个链表,使每个节点包含一个附加的随机指针,该指针可以指向列表中的任何节点或null。返回列表的深度拷贝副本解题思路(1)拷贝新节点,并插入到原节点的后边(2)拷贝新节点的随机指针(3)将新节点从原链表中分离出来代码示例1、low版class Solution {public: RandomListNode *copyRandomList(RandomListNode *head...原创 2018-07-04 22:56:27 · 368 阅读 · 0 评论 -
链表循环节点问题
题目描述给定一个链表,返回循环开始的节点。如果没有循环节点,return NULL,并且要求在不占用额外空间的情况下解决解题思路(1)快慢节点确定是否会相交,若循环,则快慢指针会相交,若不循环,则快指针会指向空(2)若相交,记录慢指针位置,并让快指针回到头结点,两指针再一起走,第一个相交点,为循环开始的节点代码示例class Solution {public: ListNode *detec...原创 2018-07-04 15:59:31 · 1310 阅读 · 0 评论 -
链表重排序--reorder-list
题目描述Given a singly linked list L: L 0→L 1→…→L n-1→L n, reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→…You must do this in-place without altering the nodes' values. For example, Given{1,2,3,4...原创 2018-07-04 14:20:57 · 441 阅读 · 0 评论 -
求根号x(LeetCode--分治篇)
题目描述实现int sqrt(int x).计算并返回x的平方根。方法牛顿迭代法和二分查找法1. 牛顿迭代法思路:给定一个初始值,然后通过迭代来逼近方程的解举例:本题求的是函数f(x) = x^2 - t = 0(其中t为所给数值x)的解赋初始值,假设x0 = t计算迭代公式,在点(x0,f(x0))处对曲线作切线,得到如下方程y - f(x0) = f(x0)'(x - x0),令y = 0,解...原创 2018-07-01 16:41:41 · 3984 阅读 · 0 评论 -
求x的n次幂 (LeetCode--分治篇)
题目描述求x的n次幂思路若n = 8,需要8个x相乘,也等同于4个x*x相乘,也等同于2个x*x*x*x相乘,也等同于1个x*x*x*x*x*x*x*x相乘递归过程n为偶数:pow(x * x, n / 2);n为奇数:pow(x * x, n / 2) * x;边界条件n为0,返回1n小于0,返回1 / x * pow(1 / x, -(n + 1));注意:此处并不是简单的把n转变成-n,原因...原创 2018-07-01 21:03:52 · 3763 阅读 · 0 评论 -
排列数字(LeetCode--分治篇)
题目描述给定可能包含重复的数字集合,返回所有可能的惟一排列。例如,[1,1,2]有以下独特的排列:[1,1,2],[1,2,1],[2,1,1]。解题思路1. 解决重复数字问题先对容器num进行排序,保证重复数字相邻,这样在后续操作中,利用条件,若后一数与前一数相等,则不处理2、解决数字是否进入排列list容器问题使用额外bool类型容器used,区分当前值是否已进入排列当中3、解决排列问题(1)...原创 2018-07-01 22:40:44 · 468 阅读 · 0 评论 -
排列问题 (LeetCode--分治篇)
题目描述给定一个数字集合,返回所有可能的排列。例如[1,2,3]有如下排列:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2], and[3,2,1].解题思路(我还说不清楚,再缕缕吧)边界条件:s表示已经对num处理过几次,若达到num长度,则可将当前num压入res中代码示例class Solution {public: vector<vector<...原创 2018-07-02 13:25:03 · 222 阅读 · 0 评论 -
删除链表中重复节点
题目描述给定一个已排序的链表,删除所有具有重复数字的节点,只保留与原始链表不同的数字。例如,给定1 - > 2 - > 3 - > 3 - > 4 - > 4 - > 5,返回1 - > 2 - > 5。给定1 - > 1 - > 1 - > 2 - > 3,返回2 - > 3。解题思路...原创 2018-07-09 17:14:30 · 356 阅读 · 0 评论 -
保证每个链表值只出现一次
题目描述给定一个已排序的链表,删除所有重复的元素,使每个元素只出现一次。例如,给定1 - > 1 - > 2,返回1 - > 2给定1 - > 1 - > 2 - > 3 - > 3,返回1 - > 2 - > 3。解题思路遍历数组,遇到重复的就删除代码示例class Solution {public: ListNode *deleteD...原创 2018-07-09 17:19:58 · 144 阅读 · 0 评论 -
合并两个有序链表
题目描述合并两个已排序的链表并作为一个新的链表返回。新的列表应该通过拼接前两个列表的节点来完成。解题思路新建一节点,遍历链表,谁小谁就是新建节点的next我的脑洞如果l1中某个节点小于l2中某个节点,则继续比较l1中下一个节点与l2当前节点的大小,l2同理奇怪的代码示例class Solution {public: ListNode *mergeTwoLists(ListNode *l1, ...原创 2018-07-09 17:35:49 · 134 阅读 · 0 评论 -
链表右旋
题目描述给定一个列表,将链表向右旋转k个位置,其中k是非负的。例如,给定1 - > 2 - > 3 - > 4 - > 5 - > NULL和 k = 2,返回4 - > 5 - > 1 - > 2 - > 3 - > NULL。解题思路遍历链表,记录链表的长度l,并将原链表的最后一个节点与第一个节点相连注意k可能会大于len,因此k%=...原创 2018-07-09 19:56:38 · 173 阅读 · 0 评论 -
字符串断开问题(word break II) (LeetCode--递归篇) 难
给定一个字符串s和一个单词词典,在s中添加空格来构造一个句子,每个单词都是一个有效的字典单词。返回所有可能的句子。例如,给定s ="catsanddog", dict =["cat", "cats", "and", "sand", "dog"]。解决办法是“cats and dog”、“cat sand dog”。...原创 2018-07-03 21:20:19 · 902 阅读 · 0 评论 -
求二叉树最大深度(easy)
题目描述:给定一个二叉树,找到它的最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点数量。解题思路:递归,求出左子树最大深度,求出右子树最大深度,取其中最大的数,再加上头结点(1),即可边界条件:如果根节点为空,则返回0代码示例:class Solution {public: int maxDepth(TreeNode *root) { if (root == NU...原创 2018-07-03 22:02:49 · 232 阅读 · 0 评论 -
链表排序,时间复杂度O(nlogn)
题目描述对链表进行排序,要求时间复杂度O(nlogn)解题思路因题目要求复杂第O(nlogn),故可以考虑归并排序(1)将待排序数组(链表)取中点并一分为二;(2)递归地对左半部分进行归并排序(3)递归地对右半部分进行归并排序(4)将两部分进行合并(merge),得到结果关键问题(1)找出链表中点(快慢指针,快指针一次走两步,慢指针一次走一步,快指针在链表末尾时,满指针刚好来到链表中点)(2)写出...原创 2018-07-04 13:37:30 · 7082 阅读 · 0 评论 -
二叉树最小深度
题目描述给定一个二叉树,找到自己的最小深度。最小深度是指从根节点到最近的叶节点的最短路径上的节点数量。解题思路递归若为空树,返回0若左子树为空,则返回右子树的最小深度 + 1(加1是因为要加上根这一层,下同)若右子树为空,则返回左子树的最小深度 + 1若左右子树均不为空,则取左、右子树最小深度的较小值, + 1代码示例class Solution {publi...原创 2018-08-01 10:47:04 · 235 阅读 · 0 评论