- 博客(10)
- 收藏
- 关注
原创 回溯类题目解法与实例
总结自 代码随想录回溯回溯有什么用:回溯 = 穷举,当需要不断做出选择,需尝试所有选择,以找到题解时,则总可以用回溯。比如 :组合问题:N个数里面按一定规则找出k个数的集合切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集排列问题:N个数按一定规则全排列,有几种排列方式棋盘问题:N皇后,解数独等等另外,在解动态规划算法题时,先模拟下回溯会很有帮助。回溯长什么样:递归可用树形结构模拟,因为回溯法解决的都是在集合中递归查找子集,集合的大小 .
2021-10-14 23:52:39
140
原创 04二叉树的修改与构造
二叉树的修改与构造翻转二叉树 链接简述:给一颗二叉树,令树内的每一个节点左右子树互换。递归思路:输入与输出:输入树的根节点,输出处理后的根节点。临界值:输入null,返回null;单层递归:前序遍历,先构造根节点:交换左右子树,然后分别翻转左右子树,作为根节点的新子树。迭代思路:DFS或BFS时,每遍历到一个节点,交换左右子节点。构造二叉树 链接简述:给一个二叉树的中序遍历和后序遍历,构建二叉树。递归思路:输入:中序遍历数组,后续遍历数组,中序遍历开始值,中序遍历结束值,后序遍历开始
2021-10-07 21:38:55
326
原创 求二叉树的属性类题目10道
该专栏为阅读代码随想录后,做的一些符合个人阅读习惯的整理笔记,详细代码可在链接内寻到。力扣101题:是否对称简述:给定一个二叉树,检查它是否是镜像对称的。递归:后序,比较的是根节点的左子树与右子树是不是相互翻转。输入与输出:输入两个节点,返回一个布尔值,表示左右子树可否互相反转。临界值:左空右不空,左不空右空,左右都空。左右都不为空,但左右值不等。单层递归的逻辑:递归比较内侧节点与外侧节点,两这都为true,返回true。迭代:双端队列模拟双栈,或是单队列操作两树,每次迭代
2021-10-04 11:14:23
118
原创 树的前、中、后、层序遍历的模板以及使用场景推荐
介绍下树的前、中、后遍历以及层序遍历,以及使用场景推荐。前、中、后遍历递归式// 以前序举例,此例可输出二叉树的前序遍历。实际使用中可将result.add(root.val)灵活变动为其他语句。class Solution { ArrayList<Integer> preOrderReverse(TreeNode root) { ArrayList<Integer> result = new ArrayList<Integer>();
2021-10-03 17:08:00
371
原创 队列实现栈
力扣225题 用队列实现栈请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。关键词: 栈、队列、Java容器。思路:向队列输入1、2、3、4,使用poll队列会给你输出1,而你
2021-09-26 00:06:06
73
原创 用栈实现队列
力扣232题 用栈实现队列。请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false关键词 栈、队列、java容器你对着栈输入1、2、3,栈给你吐3、2、1,你不爽,你想让他吐1、2
2021-09-25 23:39:38
84
原创 23.合并K个有序链表
leetcode23题 合并k个有序链表描述:给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。示例:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4-&
2021-09-23 23:46:50
97
原创 21.合并两个有序链表
leetcode 第21题将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例2 :输入:l1 = [], l2 = [0]输出:[0]关键词:链表、迭代、递归。迭代解法:迭代思路详见注释,注意循环不变量的设置:list1和list2中选取小的为list3下一节点。class Solution { public ListNode
2021-09-23 22:12:58
63
原创 2021-05-27
设计原则2-里氏替换原则简述:所有引用基类的地方,必须能透明的使用其子类的对象。只要父类出现的地方,子类就可以出现,而且替换成子类不会出现任何的异常,但是反过来,有子类出现的地方,父类不一定能适用。如需实现这一特性,需要满足以下四大细则细则:子类必须完全实现父类的方法。若是没实现,把子类a的实例赋值给父类b类型的变量,那调用b的方法时,a就无法实现,就会编译报错。子类可以有自己的个性。与第一条相反,子类替换为父类时,因为子类的个性方法在父类中未能定义,所以会报错,叫做”向下转型
2021-05-27 07:26:18
55
原创 ruoyi前后端分离框架实现省市区级联的增删改查
需求:客户信息的增删改查,包括省市区三级联动,前后端分离式开发。后台0、创建实体类SysAddress.java、修改SysUser。public class SysAddress { private Integer id; private String cityname;}public class SysUser extends BaseEntity{ 略。。。。。。。。。。 private String province; private String
2021-05-19 23:52:30
2309
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人