
数据结构与算法
文章平均质量分 84
数据结构与算法学习
myaijarvis
开发不会,机器不学,自然语言不理
欢迎一起讨论O_o
展开
-
【算法】【 LeetCode】线段树
关于各类「区间和」问题如何选择解决方案(含模板)-区域和检索-数组可修改-力扣(LeetCode)】线段树详解「汇总级别整理🔥🔥🔥」-我的日程安排表I-力扣(LeetCode)】动态开点模板。原创 2022-07-23 17:30:58 · 797 阅读 · 0 评论 -
【算法】第三届全国大学生算法设计与编程挑战赛(秋季赛)
秋季赛题目:http://vj.saikr.com/contest/16/problems【参考:第三届全国大学生算法设计与编程挑战赛题解【金奖全国第九】_米莱虾的博客-优快云博客】【参考:2021-2022第三届全国大学生算法设计与编程挑战赛(秋季赛) 题解_ReChn0的博客-优快云博客】线段树 不会,待定......原创 2022-07-13 19:32:31 · 2603 阅读 · 5 评论 -
【算法】第三届全国大学生算法设计与编程挑战赛(冬季赛)
【参考:2021-2022年度第三届全国大学生算法设计与编程挑战赛(冬季赛)题解_int 我的博客-优快云博客】思路:二分原创 2022-07-11 16:03:45 · 5100 阅读 · 0 评论 -
【LeetCode】会议调度问题 (动态规划)
【参考:会议室调度算法集锦_阿飞算法的博客-优快云博客】1751. 最多可以参加的会议数目 II hard【参考:1751. 最多可以参加的会议数目 II - 力扣(LeetCode)】【参考:【阿飞算法】畅游面试中的动态规划套路-最多可以参加的会议数目 II - 最多可以参加的会议数目 II - 力扣(LeetCode)】 循序渐进自顶向下记忆化递归memo[curr][k] : 表示处理到编号curr这个会议,还剩余k次参加会议机会所能获取的价值的最大值class Solution {原创 2022-05-15 14:04:31 · 1637 阅读 · 0 评论 -
【LeetCode】动态规划 编辑距离 字符串 双指针
编辑距离【参考:代码随想录# 动态规划之编辑距离总结篇# 判断子序列】72.编辑距离583.两个字符串的删除操作392.判断子序列392. 判断子序列 easy【参考:392. 判断子序列 - 力扣(LeetCode)】【参考:代码随想录# 392.判断子序列】这道题应该算是编辑距离的入门题目,因为从题意中我们也可以发现,只需要计算删除的情况,不用考虑增加和替换的情况。dp[i][j] 表示以下标 i-1 为结尾的字符串 s,和以下标 j-1 为结尾的字符串 t,相同子序列的长度为原创 2022-05-14 16:27:09 · 344 阅读 · 0 评论 -
【LeetCode】数学
等差数列390. 消除游戏 - medium【参考:390. 消除游戏 - 力扣(LeetCode)】纯模拟会超时class Solution { public int lastRemaining(int n) { List<Integer> list=new ArrayList<>(); for(int i=0;i<n;i++){list.add(i+1);} int d=0; while(tru原创 2022-05-12 16:51:23 · 474 阅读 · 0 评论 -
【LeetCode】动态规划 | 线性DP 序列DP(子序列)
博文声明:仅供本人学习交流使用,相关代码和资料已留下引用出处。公共子序列子序列定义:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。可以不连续【参考:【你的衣服我扒了 - 《最长公共子序列》】动态规划 - 不相交的线 - 力扣(LeetCode)】一般这种求解 两个数组或者字符串 求最大或者最小 的题目都可以考虑动态规划,并且通常都定义dp[i][j] 为 以 A[i], B[j] 结尾的 xxx718. 最长重复子数组1143..原创 2022-05-04 13:32:05 · 876 阅读 · 0 评论 -
【LeetCode】模拟题、枚举
简单937. 重新排列日志文件【参考:937. 重新排列日志文件 - 力扣(LeetCode)】【参考:【宫水三叶】简单排序运用题 - 重新排列日志文件 - 力扣(LeetCode)】多读几遍题目,代码排序记得写注释class Solution { class Log { int type, idx;// 日志类型(1是数字日志,0是字母日志) 下标 String ori, sign, content; // 日志 标识符 日志内容 Log(原创 2022-05-03 23:07:12 · 524 阅读 · 0 评论 -
【LeetCode】前缀树 Trie
【参考:前缀树算法模板秒杀 5 道算法题__微信公众号】 比较复杂,了解即可中等208. 实现 Trie【参考:208. 实现 Trie - 力扣(LeetCode)】方法不唯一【参考:Leetcode 208. 实现 Trie 字典树_哔哩哔哩_bilibili】【参考:Leetcode 208. 实现 Trie - itdef - 博客园】代码参考 【参考:Trie Tree 的实现 🌳 - 实现 Trie (前缀树) - 力扣(LeetCode)】class Trie {原创 2022-04-12 13:40:00 · 123 阅读 · 0 评论 -
【leetcode】二叉树搜索树
简单中等剑指 Offer II 054. 所有大于等于节点的值之和【参考:剑指 Offer II 054. 所有大于等于节点的值之和 - 力扣(LeetCode)】【参考:所有大于等于节点的值之和 - 所有大于等于节点的值之和 - 力扣(LeetCode)】方法一:反序中序遍历本题中要求我们将每个节点的值修改为原来的节点值加上所有大于它的节点值之和。这样我们只需要 反序中序遍历 该二叉搜索树,记录过程中的节点值之和,并不断更新当前遍历到的节点的节点值,即可得到题目要求的累加树。class原创 2022-04-08 18:54:21 · 206 阅读 · 0 评论 -
【算法】蓝桥杯历年真题 2022 第十二届
模拟题【参考:【蓝桥真题6】三十块的蓝桥省赛模拟真题,做的大一都直呼上当(文末PDF原题)_执 梗的博客-优快云博客】最少次数【参考:2022蓝桥模拟解析_底层垃圾的博客-优快云博客】import java.util.Scanner;public class Main { static int res = Integer.MAX_VALUE; public static void main(String[] args) { dfs(10,0);原创 2022-04-04 23:06:38 · 1520 阅读 · 0 评论 -
【PTA】题目
记录一些自己不太熟或者不会的题目和题型,以供后面参考和回顾012021.12.4币值转换 (20 分)来源:7-23 币值转换 (20分)-java还是没有理解 处理特殊情况0,重复的0,末尾的0,和重复的万后面的0这一块import java.util.Scanner;public class demo4 { public static void main(String[] args) { Scanner sc = new Scanner(System.in)原创 2021-12-14 23:01:48 · 326 阅读 · 0 评论 -
【算法】【LeetCode】【比赛】文章总览
语言【参考:【算法】C/C++程序设计基础_myaijarvis notebook-优快云博客】【参考:【算法】 Java程序设计基础_myaijarvis notebook-优快云博客】【参考:【算法】Java集合 && LeetCode算法笔记_myaijarvis notebook-优快云博客】【参考:【算法】C\C++ 输出输出_myaijarvis notebook-优快云博客】刷题【参考:【算法】刷题技巧、总结 (Java)_myaijarvis notebo原创 2022-03-06 17:00:31 · 475 阅读 · 0 评论 -
【算法】C\C++ 输出输出
由于OJ系统检测内存和算法时间对Java很不利,因此转行学习C++。使用C语言的输入输出最节省时间C总结gets 输入一行字符串getchar 输入一个字符 包括空格、制表符和换行符getline是C++的scanf【参考:C语言scanf:读取从键盘输入的数据(含输入格式汇总表)】1.scanf()函数原型:int scanf(const char *restrict format,…);入口参数:第一个参数是格式字符串,它指定了输入的格式,…格式化后的字符串存取地址。返回值:函数原创 2022-03-06 16:59:00 · 757 阅读 · 0 评论 -
【竞赛】算法设计与编程挑战赛
比赛每题的样例全部答对才给分答错题目会有罚时,所以要自己在本地多测几组数据(包括边界情况)【参考:ACM罚时_andy豆浆的博客-优快云博客】经验分享【参考:大神干货 | 双一流高校算法大神经验分享 助你轻松获奖!__微信公众号】视频:【https://edu.saikr.com/course/621/task/5187/show】细节读题的时候一定要把题读全了,尽量把样例算一下,这一点没做好比赛时很容易导致白白“坐牢”。读懂题目并理解再编码数据范围与时间题目给的时间比较短一般都是比原创 2022-03-06 16:58:33 · 1188 阅读 · 0 评论 -
【算法】蓝桥杯历年真题 2021 十二届
2020第十一届【参考:2020第十一届 蓝桥杯模拟赛(JAVA)_菜得真实的博客-优快云博客】四、树问题描述一棵包含有2019个结点的树,最多包含多少个叶结点?答案提交 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。【参考:20模1-3-叶结点数 一棵包含有2019个结点的二叉树,最多包含多少个叶结点?_伏城无嗔的博客-优快云博客】方法一对任何一棵非空二叉树:度为0的结点数(即叶节点) = 度为2原创 2022-03-06 16:57:22 · 4046 阅读 · 0 评论 -
【比赛】算法设计与编程挑战赛——每日一题
很多题目都是洛谷上有的,可以自己去搜索【参考:题目列表 - 洛谷 | 计算机科学教育新生态】在每日一题中,我会给出题目的算法标签以供同学们自学。 每日一题的难度会越来越大,会尝试覆盖尽可能多的算法竞赛高频考点。给出的题目均在vj.openjudge.com可以找到,对应的视频题解可以在往年真题或者基础班课程中看到(收费)。每日一题1.3.2 自然数拆分问题【参考:P2404 自然数的拆分问题 - 洛谷 | 计算机科学教育新生态】【参考:SaikrVj | 1.3.2 自然数拆分问题】1月18日原创 2022-03-02 11:09:58 · 932 阅读 · 0 评论 -
【算法】二分答案 洛谷 LeetCode
总结【参考:我写了首诗,让你闭着眼睛也能写对二分搜索 :: labuladong的算法小抄】有序数组 nums = [1,2,2,2,3],target 为 2,此算法返回的索引是 2,没错。但是如果我想得到 target 的左侧边界,即索引 1,或者我想得到 target 的右侧边界,即索引 3,中间的int binary_search(int[] nums, int target) { int left = 0, right = nums.length - 1; while(l原创 2022-02-22 22:10:01 · 717 阅读 · 0 评论 -
【leetcode】栈与队列
参考自 代码随想录总结学会逆向思维比如225. 用队列实现栈:入栈操作时,首先获得入栈前的元素个数 n,然后将元素入队到队列,再将队列中的前 n 个元素(即除了新入栈的元素之外的全部元素)依次出队并入队到队列,此时队列的前端的元素即为新入栈的元素,且队列的前端和后端分别对应栈顶和栈底。比如20. 有效的括号:在匹配左括号的时候,右括号先入栈,就只需要比较当前元素和栈顶相不相等就可以了。可以大幅度简化代码简单232. 用栈实现队列参考:232. 用栈实现队列 - 力扣(LeetCode)c原创 2022-01-20 13:58:10 · 163 阅读 · 0 评论 -
【leetcode】字符串(KMP、滑动窗口)算法
参考自 代码随想录Java、Python的String字符串是不可变的KMP实例:28. 实现 strStr - 力扣(LeetCode)参考:有限状态机之 KMP 字符匹配算法 :: labuladong的算法小抄用一个二维的 dp 数组(但空间复杂度还是 O(M)),重新定义其中元素的含义.视频必看参考:帮你把KMP算法学个通透!(理论篇)_哔哩哔哩_bilibili参考:帮你把KMP算法学个通透!(求next数组代码篇)_哔哩哔哩_bilibili前缀表不减一也不右移 容易理解h原创 2022-01-18 15:49:59 · 797 阅读 · 0 评论 -
【leetcode】哈希表
本章节来自参考:代码随想录总结两数之和 就不能使用双指针法,因为1.两数之和要求返回的是索引下标, 而双指针法一定要排序,一旦排序之后原数组的索引就被改变了。如果1.两数之和 (opens new window)要求返回的是数值的话,就可以使用双指针法了。N Sum 问题(N>=2)参考:一个函数秒杀 2Sum 3Sum 4Sum 问题采用递归方式,base case是2Sum/* 注意:调用这个函数之前一定要先给 nums 排序 */vector<vector<i原创 2022-01-16 22:28:59 · 133 阅读 · 0 评论 -
【leetcode】链表 && 双指针
简单203. 移除链表元素参考:203. 移除链表元素 - 力扣(LeetCode)设置虚拟头节点,方便把删除头节点和非头节点的操作统一化/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * L原创 2022-01-13 17:31:50 · 237 阅读 · 0 评论 -
【leetcode】数组
简单27. 移除元素参考:27. 移除元素 - 力扣(LeetCode)双指针法(快慢指针法)拷贝覆盖class Solution { public int removeElement(int[] nums, int val) { int n = nums.length; int left = 0; for (int right = 0; right < n; right++) { if (nums[rig原创 2022-01-13 17:31:37 · 140 阅读 · 0 评论 -
【leetcode】BFS DFS (图论)
总结套路:图论算法基础(修订版)_ labuladongDFS应用:二叉树搜索,图搜索回溯法=DFS+剪枝DFS:每一条路径走完再回溯BFS…//938.二叉搜索树的范围和public int rangeSumBST(TreeNode root, int low, int high) { if(root==null) return 0; int result=0; Queue<TreeNode> queue=new Lin原创 2021-12-21 16:07:40 · 480 阅读 · 0 评论 -
【leetcode】二叉树
Java实现Python待定简单94. 二叉树的中序遍历数组 递归/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int原创 2021-11-29 20:28:25 · 396 阅读 · 0 评论 -
【LeetCode】回溯 N皇后(DFS、子集、组合问题)
技巧:经常需要一个start来标记开始选择的起始位置来达到去重的目的C++ 总结了回溯问题类型 带你搞懂回溯算法(大量例题)https://leetcode-cn.com/problems/subsets/solution/c-zong-jie-liao-hui-su-wen-ti-lei-xing-dai-ni-gao-/①画出递归树,找到状态变量(回溯函数的参数),这一步非常重要※②根据题意,确立结束条件③找准选择列表(与函数参数相关),与第一步紧密关联※④判断是否需要剪枝⑤作原创 2021-11-29 20:28:08 · 424 阅读 · 0 评论 -
【leetcode】贪心
说实话贪心算法并没有固定的套路。刷题或者面试的时候,手动模拟一下感觉可以局部最优推出整体最优,而且想不到反例,那么就试一试贪心。简单455. 分发饼干class Solution { public int findContentChildren(int[] g, int[] s) { Arrays.sort(g); Arrays.sort(s); int result=0; int j=0; // 遍历饼干 先用原创 2021-11-29 20:27:40 · 141 阅读 · 0 评论 -
【算法】动态规划 && leetcode (递推、斐波那契数变体、打家劫舍问题)
中等322. 零钱兑换class Solution { public int coinChange(int[] coins, int amount) { int[] dp=new int[amount+1]; Arrays.fill(dp,amount+1); dp[0]=0; for(int i=1;i<dp.length;i++) for(int coin:coins)原创 2021-11-29 20:13:58 · 731 阅读 · 0 评论