算法学习记录
文章平均质量分 64
Moca_official
九乡河文理学院小菜鸡
展开
-
高级算法复习指南
近似比≥1。原创 2024-06-18 22:30:30 · 719 阅读 · 0 评论 -
力扣每日一题 2024/3/24 零钱兑换
动态规划五步法第一步确定dp数组的含义:dp[i]为凑到金额为i所用最少的硬币数量第二步确定动态规划方程:凑足金额为j-coins[i]所需最少的硬币个数为dp[j-coins[i]],那凑足金额为j所用的最少硬币数为dp[j-coins[i]]+1第三步初始化:凑足金额为0所需硬币数为0,即dp[0]=0此外dp数组内其他值也需初始化为最大值,否则在遍历coins数组计算金额的时候容易被覆盖第四步遍历顺序:外层遍历物品,内层遍历背包容量第五步推导得出dp[amount]原创 2024-03-24 15:32:11 · 578 阅读 · 0 评论 -
力扣每日一题 2024/3/23 统计桌面上的不同数字
给定整数n,找出循环十亿天后桌上的数字。可以先通过一天来找找规律。第一天 n%i==1 (1<=i<=n)只有n-1符合.加入桌面第二天(n-1)%i==1 (1<=i<=n-1)只有n-2符合 加入桌面依次类推 例外2%1==0 所以1不符合题目条件限制最后桌面上只有n-1个数字。原创 2024-03-23 14:33:20 · 262 阅读 · 0 评论 -
力扣每日一题 2024/3/21 频率跟踪器
看到统计数字频率或者出现次数很容易想到用哈希表,但是一个哈希表count将数字和数字出现次数映射起来似乎不太够,如果需要统计数字出现次数的频率的话还是需要进行一次遍历,时间复杂度为O(n),有没有常数级获取数字出现次数的频率呢,再定义一个哈希表times,用来建立数字出现次数和数字出现次数的频率的哈希表。删除元素同理,首先找到该数字对应的出现次数,进行减一,然后更新times哈希表,该数字对应出现次数的频率减一,该数字删除后对应的出现次数的频率加一。空间复杂度O(m) m为值域范围。原创 2024-03-21 17:03:51 · 322 阅读 · 0 评论 -
力扣每日一题 2024/3/19 好子数组的最大分数
好子数组的下标在i<=k<=j,即nums[k]必须在好子数组当中,将数组以k为分界点分为左右两半,左半left从k-1向左移动,右半right从k+1开始出发向右移动。当left大于等于分界点的值时左移一位,当right大于等于分界点的值时右移一位,这样做的目的是确保k所在位置的值为整个子数组内最小值min,定义ans用来存储最小值*区间长度当left和right同时到达边界时停止移动,退出循环。原创 2024-03-19 14:05:58 · 367 阅读 · 0 评论 -
力扣每日一题 2024/3/18 区域和检索
看到对某一区间内进行求和,很容易想到前缀和定义一个sums数组用于存储前缀和,容量为nums.length+1初始化的时候对nums数组进行求和,将前k项的和存储进sums数组中这样对某一区间[left,right]的求和就不必遍历一遍,直接返回sums[right+1]-sums[left]即可将原本可能会有的O(n)(n为数组nums的长度)复杂度降到了常数级复杂度。原创 2024-03-18 14:37:00 · 447 阅读 · 0 评论 -
力扣每日一题 2024/3/17 最小高度树
如果图中只有一个结点,直接返回结果即可首先定义一个邻接表adj来存储无向图edges上关联的结点,利用数组degree来存储每个节点的度。遍历degree数组,将所有度为1的结点加入队列q中,定义剩余节点初始为n,当剩余节点大于2的时候,计算当前队列的长度sz,依次从队列q中将度为1的结点取出,遍历所有与他相连的结点(即遍历其所在的链表adj),将所有关联的结点的度degree[v]-1,当其中关联结点的度为1的时候再次压入队列q中。重复之前的步骤,直至剩余节点小于等于2为止。原创 2024-03-17 17:01:15 · 407 阅读 · 0 评论 -
力扣每日一题 2024/3/16 矩阵中移动的最大次数
首先这个系列不一定会连续更新下去 也许会断更 目前只打算更新每日一题的easy和medium难度 会逐步讲解每一行代码的思路。原创 2024-03-16 14:44:21 · 1056 阅读 · 0 评论 -
算法学习记录 8.18 数学知识(质数)
定义:在大于1的整数中,如果只包含1和本身这两个约数,就被称为质数或者素数。原创 2023-08-18 16:35:53 · 68 阅读 · 1 评论 -
算法学习记录 8.17 最短路(Floyd算法) 最小生成树(Prim算法 Kruskal算法)染色法判定二分图 匈牙利算法
基于动态规划思想见题解。原创 2023-08-17 16:51:07 · 92 阅读 · 1 评论 -
算法学习记录 8.16 最短路(Dijkstra算法 Bellman-Ford算法 SPFA算法)
1.定义一个数组dist表示源点到其余各个结点的距离,dist[i]表示源点到结点i的距离,数组dist内各个元素初始为无穷大用一个状态数组state标记是否找到源点到该结点的最短距离,如果为真,则表示找到了源点到该结点的最短距离,如果为假,则表示还没有找到源点到该点的最短距离 状态数组state初始为假2.源点到源点的距离为0 则dist[1]=03.遍历dist数组,找到一个未确定为最短路径的所有结点中离源点最近的结点。假设该结点编号为i,则更新对应的state数组:state[i]=true。原创 2023-08-16 16:28:11 · 80 阅读 · 1 评论 -
算法学习记录 8.15 树和图的深度优先搜索 树和图的宽度优先搜索
树的重心给定一棵树,如果删除树中某个结点,剩余各个连通块分量有几种情况呢1.以它的孩子结点为根所在树的结点个数2.以它的父亲结点为根所在树的结点个数-以它为根所在树的结点个数定义两个变量sum用于存储每棵树的结点总数 res用来存储删除该节点后 连通图的最大点数利用ans来存储所有结点被删除情况下各个连通图最大点数的最小值。原创 2023-08-15 15:16:58 · 159 阅读 · 0 评论 -
算法学习记录 8.14 深度优先搜索 宽度优先搜索 树和图的存储
对比 数据结构 空间DFS: stack O(h) 不具最短性BFS: queue O(2^h) 最短路。原创 2023-08-14 17:10:37 · 89 阅读 · 0 评论 -
算法学习记录 8.11 哈希表
哈希表根据存储结构可以分为开放寻址法和拉链法。原创 2023-08-11 16:56:44 · 60 阅读 · 1 评论 -
算法学习记录 8.10 Trie树 并查集 堆
定义一个数组son用于记录每个结点孩子节点的下标 son[ p ][ u ]p表示父亲结点的位置 u表示孩子结点的名字定义一个数组cnt[ p ]表示该字符数组结尾作标记 表示已经存在例如son[ 0 ][ 1 ]=2 表示根节点有一个孩子‘b’的下标为2son[ 2 ][ 3 ]=4 表示结点b有一个孩子‘c’的下标为4常见操作:插入查找完整代码。原创 2023-08-10 18:47:07 · 60 阅读 · 1 评论 -
算法学习记录 8.9 单调栈 单调队列 KMP
省流:找出数列中每个数左边比它小且离它最近的数数列中的数是无序的 可以通过将递减数去除的方式将数列缩减成单调数列 便于查找左边最小值定义数组stk来存储单调递增的数字单调栈内 如果一个数比它右侧的数小了 那么它的左边的所有数都比他小题解定义两个数组a和q 数组a用来存放数列 数组q用来模拟队列 存放的是数列的下标首先读取数组a的数 判断当前队头存储的下标要在滑动窗口的范围内 如果队头存储的下标超出滑动窗口范围 则窗口向右移动一格。原创 2023-08-09 19:57:32 · 82 阅读 · 1 评论 -
算法学习记录 8.8 链表 栈和队列
这里采用的是数组模拟链表 而非传统意义上的结构体原因是生成一个结构体需要很长时间,作为算法题解而言数组模拟会更快一些开辟两个数组e和ne 其中数组e记录每个结点的值 数组ne记录当前结点所指向下一个结点的值定义idx和head idx表示当前结点 head表示头结点常见单链表的操作:1.向链表头插入一个数x先将值x存储到数组e中,新插入的结点指向头结点所指向的结点,头结点指向新插入的结点,idx顺位移动。2.删除第 k 个插入的数后面的数只需让第k个结点指向第k个结点指向的结点的下一个结点。原创 2023-08-08 15:51:43 · 41 阅读 · 0 评论 -
算法学习记录 8.7 双指针算法 位运算 离散化 区间合并
2023/8/7原创 2023-08-07 16:51:13 · 85 阅读 · 1 评论 -
算法学习记录 8.5 前缀和与差分
如给定区间[l,r] 求区间中元素的和 即。原创 2023-08-05 11:32:43 · 83 阅读 · 1 评论 -
算法学习记录 8.4 高精度运算
/从序列(List)的第0个元素开始依次循环,并且调用每个元素的equals()方法和参数对象进行比较,如果某一个元素的equals()方法返回值为true,那么就把当前元素的索引位置作为结果返回。//与indexOf()方法相反,它返回的是某个元素最后一次出现的索引位置的值,也就是它会从序列的队尾向队头进行遍历。定义:List A=new ArrayList(//可以是数组容器的长度 不确定可以不填)List集合中元素的个数:A.size();原创 2023-08-04 15:18:18 · 77 阅读 · 1 评论 -
算法学习记录 8.3 快速排序 归并排序 整数二分 小数二分
2023/8/3原创 2023-08-03 16:15:22 · 114 阅读 · 0 评论