
算法
文章平均质量分 75
帅过地球一半的男人
至少帅过地球一半的男人
展开
-
多线程汇总(耐心等待)
力扣链接思路:递归或迭代class Solution { public ListNode removeElements(ListNode head, int val) { //递归 if(head == null) return head;//边界 //判断当前节点,相等就移除,引用往后移,只考虑此刻,后面的节点由递归搞定。 if(head.val == val) { head=.原创 2022-03-14 11:50:03 · 375 阅读 · 0 评论 -
算法-栈和队列汇总
栈和队列都是比较简单的数据结构,这里就不做过多的解释,只解释对应到Java中的类(建议自行查看源码--极其友好)。原创 2023-01-14 16:14:49 · 758 阅读 · 0 评论 -
图算法汇总
拓扑排序、最短路径、最小生成树原创 2022-09-12 19:08:48 · 144 阅读 · 0 评论 -
设计场景题
LRU,滑动窗口原创 2022-09-10 15:48:17 · 287 阅读 · 0 评论 -
力扣剑指Offer(每日打卡)
力扣剑指Offer原创 2022-09-10 11:01:53 · 365 阅读 · 0 评论 -
集合求子集系列
力扣链接思路:做法和全排列类似,差别在于多了不同长度的子集和子集元素与顺序无关,对于不同长度的子集,可分别通过多次调用递归,也就是遍历长度为1,2,3,4等不同长度的子集。顺序无关这个其实就要求在递归过程中,防止重复遍历,具体解析见递归函数。 private List<List<Integer>> res = new ArrayList<>(); public List<List<Integer>> subsets(int[] n.原创 2022-03-19 15:19:51 · 479 阅读 · 0 评论 -
二叉树汇总
文章目录遍历问题226. 翻转二叉树距离问题104. 二叉树的最大深度543. 二叉树的直径遍历问题226. 翻转二叉树力扣传送门思路:递归,DFS遍历利用DFS遍历每个节点时,交换左右子树的节点引用(经典两数交换) public TreeNode invertTree(TreeNode root) { if(root == null) return null; TreeNode tmp = root.left; root.left = invertTre原创 2022-08-28 12:43:45 · 193 阅读 · 0 评论 -
反转字符串系列
力扣链接思路:字符串转数组toCharArray(),字符交换(两数交换)。class Solution { public String reverseStr(String s, int k) { char[] ch = s.toCharArray(); int len = ch.length; int j = 0; while (2*k <= len) { reverse(ch,j,j+k-.原创 2022-03-13 18:32:42 · 339 阅读 · 0 评论 -
双指针汇总(未完待续)
是否符合,符合条件就是0左边的数是否等于0,且1右边的数是否等于1,可通过双指针,由内不断外扩,类似回文字符串。优化,取模的过程是从后往前遍历每个数,那么,如果同时用乘法,从后往前计算,得到的结果如果跟最初的值一样,说明是回文数,例如1221,反过来也是1221,但1231反过来是 1321。法二:从第一个字符开始,计算连续重复字符的个数tmp,直到出现转折的地方j, 往后与前面重复的数字不断比较,有多少个不一样的,就有多少个符合的字串,最多tmp个。法一:遍历每种长度的字符串,长度为1的,长度为2…...原创 2022-03-19 10:45:53 · 448 阅读 · 0 评论 -
二叉搜索树BST(分类三)
知识:BST:Binary Search Tree (二叉搜索树、二叉查找树、排序二叉树)概念:1、空树;2、左右子树均是BST;3、左子树所有节点的数据域均小于或等于根节点的数据域,右子树则大于性质:中序遍历的结果是有序的235. 二叉搜索树的最近公共祖先力扣传送门思路:方法一:从根出发,两次遍历,分别记录两节点各自的路径,它们的路径必有分叉点,而那个分叉点即为最近公共祖先。例如求0,5的最近公共祖先方法二:根据本题和二叉搜索树的特点,可得出左边的所有节点<根节点<.原创 2022-03-28 14:59:43 · 668 阅读 · 1 评论 -
全排列系列
力扣链接思路:解析来自算法书《算法笔记》——胡凡 public void digui(int[] nums,boolean[] hash,Integer[] res,int index) { //边界 if(index == nums.length) { //手动循环 List<Integer> list = new ArrayList<>(); for(Inte.原创 2022-03-16 18:49:42 · 462 阅读 · 0 评论 -
组合系列--有排列就有组合
组合的题目的重点就是顺序问题,他不像排列,不同顺序代表一个排列,所以组合的遍历。当然最后一题是题目自己定义组合的,所以会有所不同。原创 2022-07-30 14:11:55 · 241 阅读 · 0 评论 -
双指针汇总(未完待续)
11. 盛最多水的容器力扣传送门原创 2022-07-15 20:05:54 · 108 阅读 · 0 评论 -
动态规划汇总(未完待续)
刚开始学或做动态规划的题目的时候,能用dp数组做出来的,就用dp数组,别理那些用几个临时变量的,你dp数组用多了,理解了,自然就会去改进,所以不要一上来就要求那么高,这样容易费时间又打击自己,想想一开始我们都是暴力法慢慢走过来的。.....................原创 2022-05-16 11:48:20 · 912 阅读 · 0 评论 -
贪心算法or规律题(未完待续)
1217. 玩筹码力扣传送门题意:把筹码(就是芯片😐)移到一个位置需要付出的代价,其中,奇数移到奇数不用钱,偶数同理;奇偶之间每移动一个筹码一块钱。思路:规律题①奇数都能移到同一个奇数a上,无需花费②偶数都能移到同一个偶数b上,无需花费③最终的消耗,就是a上的筹码数量(奇数个数)和b上的筹码数量(偶数个数)的最小值,因为我们只需要将数量小的移动到数量多的即可。class Solution { public int minCostToMoveChips(int[] position)原创 2022-05-11 10:24:47 · 163 阅读 · 0 评论 -
数组骚操作(未完待续)
预处理的意思就是在常规的遍历中,先计算某些需要的数据,而不是等到遍历每个点,再去计算一次。1582. 二进制矩阵中的特殊位置力扣传送门思路一:预处理对于特殊位置,需要保证该点所在的行,所在列的其它位置都是0,相当于行的元素之和、列的元素之和都为1。最容易想到的就是遍历到为1的点,就去判断该点所在的行和列是否符合,但这样对于同一行或者同一列的点,我们就要重复计算好多次。所以我们可以先计算并保存每一行、每一列的元素之和,在遍历判断时就可以直接读取保存的值,预处理使得每一行每一列只需计算一次。cla原创 2022-05-08 15:08:54 · 535 阅读 · 0 评论 -
哈希表汇总(未完待续)
文章目录哈希表数组442. 数组中重复的数据1394. 找出数组中的幸运数1122. 数组的相对排序字符串面试题 01.02. 判定是否互为字符重排哈希表数组442. 数组中重复的数据力扣传送门思路一:快排数组中的元素要么出现一次,要么出现两次,所以可先使用Arrays.sort,在对数组进行遍历,即比较左右两元素是否相等,相等则说明出现了两次,添加到结果集。代码略思路二:哈希表以元素作为下标,统计元素的个数,个数为2则添加到结果集。这里不需要HashMap,因为数组元素的大小访问在原创 2022-05-08 15:06:50 · 440 阅读 · 0 评论 -
链表汇总(未完待续)
链表基础原创 2022-05-06 21:04:47 · 515 阅读 · 0 评论 -
二叉树遍历汇总
必须有中序才能构建二叉树105. 从前序与中序遍历序列构造二叉树力扣传送门思路:先序中序遍历特点,具体看《算法笔记》—胡凡理解书内的思路即可,具体实现可以不用那么复杂,因为书里的区间下标比较复杂,这里的前序数组其实可以不用转化为区间。 private int count = 0;//用于前序数组遍历 public TreeNode buildTree(int[] preorder, int[] inorder) { return dfs(preorder,in原创 2022-05-05 11:15:57 · 146 阅读 · 0 评论 -
BFS和DFS搜索汇总(未完待续)
1091. 二进制矩阵中的最短路径力扣传送门思路:BFS从起点出发,往8个方向(左,右,上,下,左上,左下,右上,右下)分别遍历,也就是考虑每种情况,然后不断向外扩,而且仅考虑为0的节点。由于求路径长度,所以需要知道当节点到达最后一个节点时,是第几层的BFS,于是构造了Node节点,用于存放在矩阵中的位置和BFS层数。提示:如果不是很懂的话,建议学下BFS,特别是里面的迷宫例子,流程基本很像。这道题就是判断比较多,不然代码看着也不会那么吓人,其实基本步骤能写出来就行,后面那些判断再一点点加上去原创 2022-05-03 19:05:09 · 852 阅读 · 0 评论 -
排序题目汇总(基础+进阶)
冒泡、插入、选择、快排、归并、堆排序等等原创 2022-04-05 14:19:58 · 1431 阅读 · 0 评论