随笔分类 -  代码随想录算法训练营

摘要:最少数量的箭引爆气球 这里的重点在更新最小右边界 class Solution { public int findMinArrowShots(int[][] points) { if(points.length==0){ return 0; } Arrays.sort(points, (a, b) 阅读全文
posted @ 2025-04-28 09:30 Anson_502 阅读(21) 评论(0) 推荐(0)
摘要:合并区间 class Solution { public int[][] merge(int[][] intervals) { List<int[]> res = new LinkedList<>(); //按照左边界排序 Arrays.sort(intervals, (x, y) -> Integ 阅读全文
posted @ 2025-04-28 09:29 Anson_502 阅读(8) 评论(0) 推荐(0)
摘要:买卖股票的最佳时机 每天的利润组成一个数组,取数组中的正数(局部最优),加起来就是总的最大的利润 class Solution { public int maxProfit(int[] prices) { int[] profit = new int[prices.length-1]; int j 阅读全文
posted @ 2025-04-23 22:01 Anson_502 阅读(7) 评论(0) 推荐(0)
摘要:加油站 如果gassum小于0,那么起点一定在下一个位置 class Solution { public int canCompleteCircuit(int[] gas, int[] cost) { int totalSum = 0; int gasSum = 0; int start = 0; 阅读全文
posted @ 2025-04-23 22:00 Anson_502 阅读(17) 评论(0) 推荐(0)
摘要:贪心算法 通过局部最优,推出整体最优。 刷题或者面试的时候,手动模拟一下感觉可以局部最优推出整体最优,而且想不到反例,那么就试一试贪心,贪心有时是常识性的,所以会认为本就应该这样做 分发饼干 class Solution { public int findContentChildren(int[] 阅读全文
posted @ 2025-04-22 08:46 Anson_502 阅读(6) 评论(0) 推荐(0)
摘要:递增子序列 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。 这里仍然是树层去重,不能排序后再去重,因为不能改变元素的相对位置 在哪一层 阅读全文
posted @ 2025-04-20 15:46 Anson_502 阅读(6) 评论(0) 推荐(0)
摘要:复原IP地址 类似于上题的分割回文串 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。 class Solution { List<String> resu 阅读全文
posted @ 2025-04-18 15:13 Anson_502 阅读(9) 评论(0) 推荐(0)
摘要:回溯法 理论基础 回溯法解决的问题: 组合问题:N个数里面按一定规则找出k个数的集合 切割问题:一个字符串按一定规则有几种切割方式 子集问题:一个N个数的集合里有多少符合条件的子集 排列问题:N个数按一定规则全排列,有几种排列方式 棋盘问题:N皇后,解数独等等 如何理解回溯法 抽象为树型结构,集合的 阅读全文
posted @ 2025-04-18 11:21 Anson_502 阅读(16) 评论(0) 推荐(0)
摘要:组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选 阅读全文
posted @ 2025-04-18 11:20 Anson_502 阅读(13) 评论(0) 推荐(0)
摘要:找树左下角的值 左下角的意思是,最后一行最左边的值,层序遍历最后一层的第一个值 class Solution { public int findBottomLeftValue(TreeNode root) { Queue<TreeNode> queue = new LinkedList<>(); q 阅读全文
posted @ 2025-04-11 08:31 Anson_502 阅读(12) 评论(0) 推荐(0)
摘要:完全二叉树结点的数量 后序遍历套模板,时间复杂度为O(n) class Solution { public int countNodes(TreeNode root) { if(root == null){ return 0; } int l = countNodes(root.left); int 阅读全文
posted @ 2025-04-09 08:55 Anson_502 阅读(11) 评论(0) 推荐(0)
摘要:翻转二叉树 class Solution { public TreeNode invertTree(TreeNode root) { if(root == null){ return null; } TreeNode temp = root.left; root.left = root.right; 阅读全文
posted @ 2025-04-08 13:38 Anson_502 阅读(10) 评论(0) 推荐(0)
摘要:二叉树 二叉树的递归遍历 class Solution { public List<Integer> preorderTraversal(TreeNode root) { ArrayList<Integer> list = new ArrayList<>(); preorder(root,list) 阅读全文
posted @ 2025-04-07 19:00 Anson_502 阅读(24) 评论(0) 推荐(0)
摘要:栈与队列 用栈实现队列 class MyQueue { /* 一个栈是输入栈,另一个栈是输出栈 当pop时,如果输入栈有元素,则将其全部push进输出栈,再pop */ Stack<Integer> InPutStack; //注意在这里声明! Stack<Integer> OutPutStack; 阅读全文
posted @ 2025-04-04 17:18 Anson_502 阅读(11) 评论(0) 推荐(0)
摘要:反转字符串中的单词 这里注意如何使用快慢指针将空格处理成题目要求的情况 抄的leetcode题解,记得回顾 class Solution { public String reverseWords(String s) { StringBuilder sb = trimSpaces(s); // 翻转字 阅读全文
posted @ 2025-04-04 10:36 Anson_502 阅读(12) 评论(0) 推荐(0)
摘要:字符串 反转字符串 class Solution { public void reverseString(char[] s) { int left = 0; int right = s.length-1; while(left<=right){ char temp = s[left]; s[left 阅读全文
posted @ 2025-04-02 16:19 Anson_502 阅读(19) 评论(0) 推荐(0)
摘要:四数之和 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, j, k, l < n nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0 注意这 阅读全文
posted @ 2025-04-01 13:24 Anson_502 阅读(34) 评论(0) 推荐(0)
摘要:哈希表 什么时候使用哈希法,当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。 有效的字母异位词 用数组! class Solution { public boolean isAnagram(String s, String t) { char[] schar 阅读全文
posted @ 2025-03-31 23:00 Anson_502 阅读(37) 评论(0) 推荐(0)
摘要:两两交换链表中的节点 注意循环控制条件以及cur的位置 交换的是cur后面的两个节点的位置 class Solution { public ListNode swapPairs(ListNode head) { ListNode dummyHeadNode = new ListNode(0); du 阅读全文
posted @ 2025-03-30 09:41 Anson_502 阅读(48) 评论(0) 推荐(0)
摘要:链表 删除链表元素 原地删除和虚拟头结点(DummyNode) 原地删除(头结点和其他结点的操作不一致),也可以两个指针,一个表示当前结点,一个表示当前节点的上一个结点 //while循环中的条件是怎么来的?下面要取他的值,如果为空则异常 class Solution { public ListNo 阅读全文
posted @ 2025-03-28 21:54 Anson_502 阅读(60) 评论(0) 推荐(0)