- 博客(149)
- 收藏
- 关注
原创 关于黑马程序员mysql的linux配置修正
1.网络连接不了外网,需要更改源2.依赖冲突3.防火墙把3306端口默认关闭问题红色加粗为修正部分。
2026-01-22 11:16:48
788
原创 Leetcode+Java+图论+最短路径问题
小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。小明的起点是第一个车站,终点是最后一个车站。然而,途中的各个车站之间的道路状况、交通拥堵程度以及可能的自然因素(如天气变化)等不同,这些因素都会影响每条路径的通行时间。小明希望能选择一条花费时间最少的路线,以确保他能够尽快到达目的地。
2025-10-21 16:43:48
883
原创 Leetcode+Java+图论+最小生成树&拓扑排序
本文包含两个算法问题:1. 最小生成树问题:给定岛屿和连接距离,使用Prim或Kruskal算法求联通所有岛屿的最短公路总长度。Prim算法通过逐步生长生成树,Kruskal算法通过贪心选择最短边并查集判断连通性。2. 拓扑排序问题:处理文件依赖关系,使用Kahn算法进行拓扑排序。通过维护入度队列,逐步处理无依赖文件,若最终排序数量等于文件数则成功,否则存在循环依赖返回-1。两个问题都涉及图论算法,分别用于解决最小连通和依赖关系排序问题。
2025-10-21 16:16:18
388
原创 Leetcode+Java+图论+并查集
本文摘要: 三题均基于并查集解决图论问题。107题判断无向图中source到destination的连通性,通过并查集合并边后检查根节点是否相同。108题在无向图中找冗余边(形成环的最后一条边),使用并查集动态检测环路。109题处理有向图,分情况处理:若无入度2节点则找环边;否则删除指向入度2节点的最后一条边。核心思想均为利用并查集高效处理动态连通性问题,通过路径压缩优化查找操作,时间复杂度接近O(1)。(150字)
2025-10-21 15:59:10
1277
原创 Leetcode+Java+图论II
摘要:这两道题目分别考察图的遍历算法应用。第一题是字符串转换问题,通过BFS在单词图中寻找最短路径,要求每次只能改变一个字符且路径上的单词必须存在于字典中。第二题是图的连通性判断,使用BFS/DFS检查从节点1出发是否能到达所有其他节点。两题都利用了队列进行广度优先搜索,时间复杂度取决于图的边数和节点数。关键点在于正确构建邻接表/边关系,并合理标记已访问节点以避免重复处理。
2025-10-21 15:36:56
783
原创 Leetcode+Java+图论+岛屿问题
本文摘要:本文介绍了六种基于矩阵的岛屿问题及其解法,包括计数岛屿、计算最大岛屿面积、孤岛总面积、沉没孤岛、高山流水和建造最大岛屿。这些问题均采用BFS或DFS算法解决,核心思想是通过遍历矩阵识别连通区域,并利用标记数组避免重复访问。对于不同问题,如计算周长或合并岛屿,需调整遍历策略和边界条件处理。所有算法的时间复杂度为O(N×M),空间复杂度为O(N×M)。代码示例展示了Java实现,包括输入处理、矩阵遍历和结果输出。
2025-09-29 16:42:20
1102
原创 Leetcode+Java+单调栈
本文总结了使用单调栈解决五类典型算法问题的核心思路和代码实现: 每日温度问题:通过单调递减栈记录待升温日期,计算温度升高间隔天数。时间复杂度O(n)。 下一个更大元素问题:利用单调栈维护递减序列,快速查询nums1中各元素在nums2中的下一个更大值。处理循环数组时遍历两次模拟循环。 接雨水问题:单调栈动态维护凹槽边界,计算每个凹槽的雨水量。关键点在于弹出时确定左右边界和积水高度。 柱状图最大矩形问题:单调递增栈配合哨兵节点,高效计算以每根柱子为高的最大矩形面积。时间复杂度O(n)。 这些问题的共同特点是需
2025-09-29 16:06:26
881
原创 Leetcode+Java+动态规划VIII
本文总结了多个动态规划问题的解法,包括股票买卖、子序列、回文串等。 股票买卖问题(714题):通过动态规划记录每天持有/不持有股票的利润,考虑手续费,时间复杂度O(n)。 最长递增子序列(300题):使用dp数组记录以每个元素结尾的最长子序列长度,时间复杂度O(n^2),可优化为O(nlogn)。 最长公共子序列(1143题):通过二维dp数组比较两个字符串,时间复杂度O(mn)。 编辑距离(72题):计算单词转换的最小操作数(插入/删除/替换),时间复杂度O(mn)。 回文子串问题(647题):统计所有回
2025-09-24 17:13:37
427
原创 Java+Leetcode+动态规划VII
本文总结了四种股票买卖问题的动态规划解法: 不限交易次数(问题II):通过比较相邻价格差累加利润,时间复杂度O(n)。 最多2次交易(问题III):定义5个状态(无操作、第一次持有/卖出、第二次持有/卖出),时间复杂度O(n)。 最多k次交易(问题IV):扩展为2k+1个状态,当k较大时退化为问题II,时间复杂度O(nk)。 含冷冻期(问题309):定义4个状态(持有、可买入、卖出、冷冻期),通过滚动数组优化空间至O(1)。 所有解法均采用动态规划,通过状态转移方程计算每日最优解,最后返回终态的最大利润。不
2025-09-24 16:41:10
824
原创 Leetcode+Java+动态规划VI
文章摘要: 本文介绍了多个动态规划算法的实现,包括: 单词拆分问题:通过构建布尔数组判断字符串是否可由字典单词拼接。时间复杂度O(n²)。 多重背包问题:使用一维数组记录不同容量下的最大价值,处理有限数量物品。时间复杂度O(nCk)。 打家劫舍系列问题: 线性房屋:相邻房屋不可同时偷窃 环形房屋:分解为两个线性问题 二叉树结构:后序遍历处理节点状态 股票买卖问题:使用状态转移计算最大利润,空间优化为O(1)。 各算法均采用动态规划思想,通过状态定义、转移方程和边界条件解决问题,并针对不同场景进行优化。代码实
2025-09-24 16:13:50
1163
原创 Leetocode+Java+动态规划V
本文介绍了四个动态规划典型问题:组合求和、爬楼梯、零钱兑换和完全平方数。这些问题均采用一维动态规划解法,通过定义dp数组表示目标状态,初始化基准条件,然后通过状态转移方程递推求解。组合求和问题考虑不同顺序作为不同解,爬楼梯问题计算到达目标阶数的所有可能方式,零钱兑换问题寻找最少硬币组合,完全平方数问题则求最少平方数个数。这些问题的解法展示了动态规划处理最优化问题的通用模式,时间复杂度多为O(n*m)量级,空间复杂度为O(n)。
2025-09-24 15:55:54
1058
原创 Leetcode+Java+动态规划IV
摘要 本文探讨了四种动态规划问题及其解决方案: 目标和问题:通过将问题转化为0-1背包问题,计算特定和的子集方案数。时间复杂度O(n*bagSize),空间复杂度O(bagSize)。 一和零问题:使用二维背包解决字符串子集选择问题,在0和1数量限制下求最大子集长度。时间复杂度O(L+Nmn),空间复杂度O(m*n)。 完全背包问题:解决物品无限取用的背包问题,通过优化为一维DP实现高效求解。时间复杂度O(n*v),空间复杂度O(v)。 零钱兑换II:计算特定金额的硬币组合数,采用完全背包方法。时间复杂度O
2025-08-27 10:09:52
1058
原创 Leetcod+Java+动态规划III
有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x <= y。如果x == y,那么两块石头都会被完全粉碎;如果x!= y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回0。示例 1:1组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],
2025-08-27 09:58:11
950
原创 Leetcode+Java+动态规划II
一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?283从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右3. 向下 -> 向右 -> 向下286。
2025-08-26 18:31:35
770
原创 Leetcode+Java+dpI
本文介绍了三个经典的动态规划问题及其解法: 斐波那契数列:使用动态规划数组dp存储中间结果,避免递归重复计算,时间复杂度O(n),空间复杂度O(n)。 爬楼梯问题:与斐波那契数列类似,dp[i]表示爬到第i阶的方法数,通过状态转移方程dp[i]=dp[i-1]+dp[i-2]求解。 最小花费爬楼梯:dp[i]表示到达第i阶的最低花费,通过比较从i-1和i-2阶到达的花费取最小值,使用动态规划优化求解。 三个问题都展示了动态规划处理重叠子问题和最优子结构的优势,通过存储中间结果将指数级时间复杂度降为线性,是典
2025-08-26 18:13:45
1014
原创 Java+Leetcode+贪心V
文章摘要: 本文介绍了两个算法问题的解决方案。第一个问题要求找到小于等于给定整数n的最大单调递增数字,通过将数字转换为数组并调整不满足单调递增的位来实现。第二个问题是关于在二叉树节点上安装摄像头的最优方案,采用后序遍历和状态判断(未覆盖/被覆盖/有摄像头)来最小化摄像头数量。两个解法都通过特定的遍历和调整策略实现了最优解,时间复杂度均为O(n)。
2025-07-21 10:58:34
975
原创 Leetcode+JAVA+贪心IV
本文总结了四道贪心算法相关的区间问题: 452.用最少数量的箭引爆气球:通过按气球结束坐标排序,合并重叠区间,计算最小箭数等于非重叠区间数。 435.无重叠区间:与452题思路一致,按结束时间排序后移除重叠区间,最小移除数等于总区间数减去最大非重叠区间数。 763.划分字母区间:记录字母最后出现位置,动态维护当前片段结束点,当遍历到结束点时划分片段。 56.合并区间:按区间起始时间排序后合并重叠区间,扩展当前区间的结束时间。 这些问题的共同点是使用贪心策略,通过排序和区间合并/划分来优化解决方案,时间复杂度
2025-07-09 10:00:39
744
原创 Leetcode+Java+贪心II
本文总结了几个经典算法问题的贪心策略解法: 股票买卖问题(122题):通过累积相邻上升价格差实现最大利润,时间复杂度O(n)。 跳跃游戏(55题):通过维护当前可到达的最远位置判断能否到达终点,时间复杂度O(n)。 跳跃游戏II(45题):在保证能到达终点的前提下计算最小跳跃次数,时间复杂度O(n)。 K次取反最大化数组和(1005题):优先翻转负数,剩余次数处理最小绝对值元素,时间复杂度O(nlogn)。 这些解法都采用了贪心策略,在局部最优选择中达到全局最优,具有高效的时间复杂度(线性或线性对数级)和常
2025-07-07 17:32:39
1143
原创 Leetcode+Java+贪心I
本文摘要: 分发饼干问题:运用贪心算法,将孩子胃口和饼干尺寸排序后,用双指针从大到小匹配,优先满足大胃口的孩子。时间复杂度为O(nlogn + mlogm)。 摆动序列问题:通过统计相邻元素差值符号变化次数来确定最长摆动子序列长度。贪心策略关注峰谷交替点,特殊处理长度为1或2的情况。 最大子数组和问题:采用Kadane算法,动态维护当前子数组和,若和为负则重置子数组起点。时间复杂度O(n),适用于处理大规模数据。 三个问题均展示了贪心算法在不同场景下的高效应用,通过局部最优选择达到全局最优解。关键步骤包括排
2025-06-27 14:22:33
1103
原创 Leetcode+Java+回溯Ⅳ
本文总结了三个经典算法问题的解法: 重新规划行程问题(LeetCode 332):将机票列表建模为有向图,使用深度优先搜索和优先级队列构造欧拉路径,确保从JFK出发且字典序最小。 N皇后问题(LeetCode 51):采用回溯法逐行放置皇后,利用布尔数组快速检测行列斜线冲突,最终生成所有合法棋盘布局。 解数独问题(LeetCode 37):通过回溯法填充空白格,使用三个布尔数组快速验证行、列和3×3子网格的数字有效性,确保唯一解。 三个问题都运用了回溯法的核心思想,通过递归尝试、冲突检测和剪枝优化来寻找解,
2025-06-27 14:10:47
1096
原创 Leetcode+java+回溯3
摘要:本文分析了三个回溯算法问题:子集II(90题)、非递减子序列(491题)和全排列II(47题)。针对子集问题,通过排序和跳过重复元素避免重复子集;非递减子序列要求长度≥2,使用回溯和HashSet去重;全排列II处理重复元素时需排序并跳过已用重复项。所有解法均采用回溯框架,时间复杂度为O(N2^N)或O(NN!),空间复杂度为O(N)。代码实现展示了Java中的回溯逻辑、去重技巧和终止条件处理。
2025-06-24 17:07:23
653
原创 Leetcode+JAVA+回溯
本文汇总了五个经典回溯算法问题的解题思路: 组合总和(39题):通过回溯法寻找数组中可重复使用数字的和为目标值的所有组合,利用排序和剪枝优化效率。 组合总和II(40题):在不可重复使用数字的基础上,增加了去重逻辑,通过排序和跳过重复元素避免相同组合。 分割回文串(131题):使用回溯法将字符串分割为多个回文子串,每次分割都进行回文验证。 复原IP地址(93题):将数字字符串分割为四段有效IP地址段,需要严格验证每段的数值范围和格式。 子集(78题):生成数组的所有可能子集,通过回溯逐步构建不同大小的子集。
2025-06-24 16:54:37
1096
原创 Leetcode+JAVA+回溯1
给定两个整数n和k,返回范围[1, n]中所有可能的k个数的组合。你可以按返回答案。[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],[[1]]这个问题要求生成从 1 到 n 中选择 k 个数字的所有可能组合。组合问题与排列问题不同,组合不考虑顺序(如 [1,2] 和 [2,1] 是相同的),且每个数字只能使用一次。我们可以使用。
2025-06-24 16:02:47
1065
原创 LeetcodeBST2JAVA
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]6节点2和节点8的最近公共祖先是6。2节点2和节点4的最近公共祖先是2, 因为根据定义最近公共祖先节点可以为节点本身。
2025-04-09 16:18:49
716
原创 Horus: Interference-Aware and Prediction-Based Scheduling in Deep Learning Systems论文总结
Horus(k=1)与Horus-f(k=3)的GPU利用率相近总完成时间(makespan)均显著优于FIFO/OBP,调度决策效率提升达数百步。通过多队列加权调度(k=3),作业等待时间中位数降低6%,适用于多租户共享集群场景。对比k=3/4/5,队列数增加对总完成时间影响轻微,k=5时等待时间仅减少约1%。队列数提升虽增强公平性(等待时间优化),但略微牺牲总完成时间,此权衡在可接受范围内。默认k=3在公平性与吞吐量间取得平衡,k=5适用于对等待时间敏感场景,需根据租户需求动态配置。
2025-04-08 14:36:14
935
原创 nginx创建成功但是进不去页面
最能确定nginx可以访问的命令是。nginx.yml未设置就绪探针。附件:完整的nginx.yml。4.http错弄成https。端口80所用的协议是http。2.Pod未设置就绪探针。3.开启了代理服务器。
2025-04-04 17:47:46
286
原创 Leetcode BST JAVA
给你两棵二叉树:root1和root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。合并过程必须从两个树的根节点开始。[2,2][0, 2000]该算法通过递归的方式合并两棵二叉树 root1 和 root2,生成一棵新二叉树。
2025-03-26 13:43:20
646
原创 leetcode二叉树3
给定二叉树的根节点root,返回所有左叶子之和。24在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24root = [1]0[1, 1000]通过递归遍历二叉树,识别并累加所有左叶子节点的值。使用一个标志变量 flag 区分当前节点是否为其父节点的左子节点,只有当节点是叶子节点且是左子节点时,才将其值加到全局变量 sum 中。主函数从根节点开始递归,特殊处理单节点树(根节点不算左叶子),最终返回总和。
2025-03-24 16:47:13
1107
原创 二叉树leetcodeJAVA2
给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。[2,3,1]root = [][][0, 100]翻转二叉树的核心在于。从根节点开始,先将其左子树和右子树交换(使用临时变量保存其中一个子树),然后递归地对新的左子树和右子树执行相同的操作,直到遇到空节点(null)停止。整个过程通过自顶向下的递归,确保每个节点的左右子树都被正确翻转,最终返回调整后的根节点。
2025-03-20 14:28:23
849
原创 vLFS:基于学习的AI芯片虚拟化调度 论文总结
由于现有的启发式算法通常是在调度完成某个实例的所有任务后,再继续为其他实例调度任务。当某个实例的任务执行的很快,导致该实例的计算资源会闲置下来,造成资源浪费。为例能够自动调整待分配任务的数量,提出了vLFS,可以根据工作负载自动调整分配给每个实例的任务数量。核心思想是将AI芯片中的调度器设计为一个强化学习RL代理,使其能够自主学习最优调度策略。此外还设计了一种主机与设备之间的协调调度方法,以确保程序顺序和执行顺序的一致性。
2025-03-18 16:13:41
994
原创 LEETCODE:二叉树的层序遍历JAVA
给你二叉树的根节点root,返回其节点值的。(即逐层地,从左到右访问所有节点)。root = [1][[1]]root = [][][0, 2000]用一个全局列表 ans 表示所有层,其中 ans.get(deep) 对应第 deep 层的节点值集合。每次递归时,deep 表示当前节点所在的层号(从 0 开始)。如果 ans 的大小不足以容纳当前层(即 ans.size() < deep + 1),就添加一个新的空列表。然后将当前节点的值加入对应层的列表中。
2025-03-09 16:51:42
1610
原创 二叉树的前序、中序和后序遍历(迭代法+递归法)
解题思路1代码1 解题思路2代码2解题思路3代码394.二叉树的中序遍历解题思路1代码1解题思路2代码2解题思路3代码3 145.二叉树的中序遍历解题思路1代码1解题思路2代码2解题思路3代码3
2025-03-07 10:59:35
874
原创 Gaia+HRRN+BF对于GPU的调度
本文介绍了一种新的GPU共享和调度方法,通过暂停和恢复机制来保存和迁移模型训练状态,以及通过轻量级的采样分析来预测任务完成时间和通过高效利用碎片化资源减少了任务完成和等待时间。
2025-03-06 14:43:34
1304
原创 ESG总结
对于无服务器计算中缺乏有效的作业调度方法所带来的GPU共享、任务批处理和任务间关系不能很好的扩展的问题,提出了ESG,结合A*搜索和双刃修剪技术,在不影响质量的情况下大幅削减调度空间,不仅能够显著提高SLO命中率,也能节省很大一部分成本。无服务器平台仍以CPU为中心,忽略了GPU资源。为了在无服务器平台上为ML添加GPU支持,主流的研究利用NVIDIA MPS来促进不同函数实例间的GPU共享。但目前遇到两个重要挑战。(1)调度搜索空间的急剧扩展。
2025-03-02 14:50:11
1160
原创 GRP-HEFT:A Budget-Constrained Resource Provisioning Scheme for Workflow Scheduling in IaaS Clouds
在云中,要尽可能使用更短的执行时间运行他们的应用程序,要平衡预算,速度,工作负载等因素。在预算内找到最快工作流是要解决的问题,即异构最早完成时间HEFT。基于基本成本模型不太有希望,开始向基于小时的成本模型改变。本文目的:目标函数是最小化给定工作流的完成时间(makespan),用于基于小 时的成本模型。包括资源分配算法和调度算法。资源分配算法是从指定云提供商提供的无线资源池中获取多少和哪种类型的实例,调度程序确定将任务分配给获得的实例以及每个实例内任务的执行顺序。
2025-02-27 11:30:11
947
原创 leetcode——栈、队列
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。在这里,我们将队列存储数组元素的索引,并确保队列中的元素索引按其对应值从大到小排列。的滑动窗口从数组的最左侧移动到最右侧,每次只向右移动一位,要求返回每个窗口中的最大值。的滑动窗口从数组的最左侧移动到数组的最右侧。的字母并删除,重复执行该操作直到无法继续删除为止,返回最终的字符串。
2025-01-14 17:30:57
1216
原创 leetcode--字符串
给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。第二行为字符串 s,代表需要旋转的字符串。例如,对于输入字符串 "abcdefg" 和整数 2,函数应该将其转换为 "fgabcde"。
2024-12-17 16:23:05
847
原创 leetcode--hash表2
给定两个数组nums1和nums2,返回它们的交集[2][9,4][4,9] 也是可通过的本质上是hash数组ansresansnums1nums1[i]nums2[i][0, 1000]resnums1nums1ansnums2nums2ansnums1resresres1nums1nums2nums1时间复杂度为 O(m),其中m是nums1的长度。nums2时间复杂度为 O(n),其中n是nums2的长度。通过将结果数组从res截取成实际交集的大小,时间复杂度为 O(k),其中。
2024-12-13 13:52:24
1373
原创 leetcode——哈希表1
原理代码 38.赎金信原理代码49.字母异位词分组原理代码 438.找到字符串中所有字母异位词原理代码 这题其实不用hash,能更好的解决,其实是滑动窗口的思想,滑动窗口能把时间复杂度降低到o(n)原理代码
2024-12-10 16:48:31
1081
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅