算法思路
lc习题解析与思路
qq_37676008
这个作者很懒,什么都没留下…
展开
-
字典序
字典序算法用来解决这样一个问题:给定其中一种排列,求基于字典序的下一种排列。比如给定一种排列为 abc,则其基于字典序的下一种排列为 acb。要求下一种排列既要比原排列大,又不能有第三种排列位于他俩之间。即下一种排列为大于原排列的最小排列。以输入为 358764 为例,字典序算法的步骤:1、从原排列中,从右至左,找到第一个左邻小于右邻的字符,记左邻位置为 a。示例中 a=1,list[a...原创 2019-10-25 16:23:46 · 63 阅读 · 0 评论 -
递归函数理解、设计思路
https://blog.csdn.net/bl128ve900/article/details/89306627转载 2019-10-23 16:26:23 · 89 阅读 · 0 评论 -
动态规划
https://leetcode-cn.com/problems/2-keys-keyboard/solution/dong-tai-gui-hua-xiang-xi-fen-xi-jie-shi-wei-shi-y/原创 2021-03-19 10:24:11 · 43 阅读 · 0 评论 -
求解问题结果规模未知的情况—回溯算法 + 剪枝(lc.46)
解题思路:做搜索、回溯问题的套路是画图,代码其实就是根据画出的树形图写出来的。那么如何画图呢?根据题目中的用例,画一个图,因为是搜索,因此呈现的是一个树形结构图,并且在这个树形结构中会体现出递归结构。根据题目中的用例,比对自己画图的结果和题目的结果的差异,如果一样,说明我们的分析没有错;如果不一样,说明我们的分析有误,一定有哪一个环节漏掉了或者分析错误,根据找到的问题调整算法。下面我具体...翻译 2020-06-22 16:23:41 · 80 阅读 · 0 评论 -
利用单位乘法实现整体乘法(字符串)
class Solution {public: string multiply(string num1, string num2) { int n1=num1.size(); int n2=num2.size(); string res(n1+n2,'0'); for(int i=n2-1;i>=0;i--){ ...翻译 2019-11-19 09:34:01 · 68 阅读 · 0 评论 -
24. 两两交换链表中的节点
24. 两两交换链表中的节点题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.思路在链表前加入一个新的头结点作为标志位,方便每次处理后两个节点。注意1、不要在代码段中处理空指针,会报错。初始化只初始化...转载 2019-10-22 10:47:07 · 38 阅读 · 0 评论 -
19. 删除链表的倒数第N个节点
19. 删除链表的倒数第N个节点题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.一次遍历方法我们可以设想假设设定了双指针 p 和 q 的话,当 q 指向末尾的 NULL,p 与 q 之间相隔的元素...转载 2019-10-16 19:23:13 · 53 阅读 · 0 评论 -
15. 三数之和
15. 三数之和题目给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。实例:例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]排序+双...转载 2019-10-16 11:18:53 · 49 阅读 · 0 评论 -
17. 电话号码的字母组合
17. 电话号码的字母组合题目1 深度优先的回溯方法2 广度优先的队列方法题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。**示例:**输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].1 深度优先的回溯方法回溯...转载 2019-10-16 11:09:41 · 45 阅读 · 0 评论