算法
文章平均质量分 58
迎风踏雪来
须知少年凌云志,曾许人间第一流
展开
-
LeetCode-树
本文主要记录LeetCode上树相关的算法题和对应的一些解法,适合新手入门,按照顺序刷题即可。1.树的遍历树的前、中、后遍历方式可以分为递归和非递归两种,此处整理了两种通用模板。递归方式:// 先序void preorder(TreeNode* root) { visit(root); preorder(root->left); preorder(root->right); }// 中序void inorder(TreeNode* root) { inorder(原创 2021-11-05 10:52:48 · 104 阅读 · 0 评论 -
LeetCode-并查集
并查集应用:判断两个节点是否连通,查找两个节点的最近公共节点;找出图成环的最后加入的一条边(最小生成树)。原创 2021-10-26 21:50:18 · 161 阅读 · 0 评论 -
LeetCode-链表
概念链表是由节点和指针构成的数据结构,每个节点存有一个值,和一个指向下一个节点的指针,因此很多链表问题可以用递归来处理。不同于数组,链表并不能直接获取任意节点的值,必须要通过指针找到该节点后才能获取其值。同理,在未遍历到链表结尾时,我们也无法知道链表的长度,除非依赖其他数据结构储存长度。LeetCode中链表的定义如下:public class ListNode { int val; ListNode next; ListNode() {} ListNode(int v原创 2021-10-14 19:51:25 · 255 阅读 · 0 评论 -
LeetCode-数组、优先级队列使用
LeetCode-数组、优先级队列使用数组Arrays.sort 函数使用方法:Arrays.sort(arr,(o1,o2)->{return o1-o2;});优先级队列定义一个递减的优先级队列,默认为递增。PriorityQueue<ListNode> queue = new PriorityQueue<ListNode>((o1,o2)->{return o1.val-o2.val;});...原创 2021-09-28 21:22:46 · 167 阅读 · 0 评论 -
LeetCode-分治法
分治法(持续更新中)自上而下的分治法可以使用结合记忆化搜索,亦等于自下而上的动态规划。312.戳气球public int maxCoins(int[] nums) { // 自上而下的分治法 == 自下而上的动态规划 // 定义辅助数组,两边补1,方便处理边界问题 int[] temp = new int[nums.length+2]; temp[0] = 1; temp[nums.length+1] = 1; for(int i=0;i<nums.lengt原创 2021-09-19 16:33:34 · 98 阅读 · 0 评论 -
LeetCode-动态规划
LeetCode-动态规划(持续更新中)本文主要对LeetCode中的动态规划类型题进行解析,讲解一些问题的解题思路和动态规划的基础解法。1.动态规划基础解法我将动态规划基础解法分为三个步骤,具体如下:定义数组dp,通过dp数组记录最终的函数返回值;确认递推公式,确认数组之间的递推关系,如dp[i] = dp[i-1] + 1;定义边界条件,确认边界处的临界值,如 dp[0] = 1 等。...原创 2021-09-13 20:06:00 · 235 阅读 · 0 评论