- 博客(134)
- 收藏
- 关注
原创 Java+Leetcode+贪心V
文章摘要: 本文介绍了两个算法问题的解决方案。第一个问题要求找到小于等于给定整数n的最大单调递增数字,通过将数字转换为数组并调整不满足单调递增的位来实现。第二个问题是关于在二叉树节点上安装摄像头的最优方案,采用后序遍历和状态判断(未覆盖/被覆盖/有摄像头)来最小化摄像头数量。两个解法都通过特定的遍历和调整策略实现了最优解,时间复杂度均为O(n)。
2025-07-21 10:58:34
855
原创 Leetcode+JAVA+贪心IV
本文总结了四道贪心算法相关的区间问题: 452.用最少数量的箭引爆气球:通过按气球结束坐标排序,合并重叠区间,计算最小箭数等于非重叠区间数。 435.无重叠区间:与452题思路一致,按结束时间排序后移除重叠区间,最小移除数等于总区间数减去最大非重叠区间数。 763.划分字母区间:记录字母最后出现位置,动态维护当前片段结束点,当遍历到结束点时划分片段。 56.合并区间:按区间起始时间排序后合并重叠区间,扩展当前区间的结束时间。 这些问题的共同点是使用贪心策略,通过排序和区间合并/划分来优化解决方案,时间复杂度
2025-07-09 10:00:39
657
原创 Leetcode+Java+贪心II
本文总结了几个经典算法问题的贪心策略解法: 股票买卖问题(122题):通过累积相邻上升价格差实现最大利润,时间复杂度O(n)。 跳跃游戏(55题):通过维护当前可到达的最远位置判断能否到达终点,时间复杂度O(n)。 跳跃游戏II(45题):在保证能到达终点的前提下计算最小跳跃次数,时间复杂度O(n)。 K次取反最大化数组和(1005题):优先翻转负数,剩余次数处理最小绝对值元素,时间复杂度O(nlogn)。 这些解法都采用了贪心策略,在局部最优选择中达到全局最优,具有高效的时间复杂度(线性或线性对数级)和常
2025-07-07 17:32:39
1024
原创 Leetcode+Java+贪心I
本文摘要: 分发饼干问题:运用贪心算法,将孩子胃口和饼干尺寸排序后,用双指针从大到小匹配,优先满足大胃口的孩子。时间复杂度为O(nlogn + mlogm)。 摆动序列问题:通过统计相邻元素差值符号变化次数来确定最长摆动子序列长度。贪心策略关注峰谷交替点,特殊处理长度为1或2的情况。 最大子数组和问题:采用Kadane算法,动态维护当前子数组和,若和为负则重置子数组起点。时间复杂度O(n),适用于处理大规模数据。 三个问题均展示了贪心算法在不同场景下的高效应用,通过局部最优选择达到全局最优解。关键步骤包括排
2025-06-27 14:22:33
1020
原创 Leetcode+Java+回溯Ⅳ
本文总结了三个经典算法问题的解法: 重新规划行程问题(LeetCode 332):将机票列表建模为有向图,使用深度优先搜索和优先级队列构造欧拉路径,确保从JFK出发且字典序最小。 N皇后问题(LeetCode 51):采用回溯法逐行放置皇后,利用布尔数组快速检测行列斜线冲突,最终生成所有合法棋盘布局。 解数独问题(LeetCode 37):通过回溯法填充空白格,使用三个布尔数组快速验证行、列和3×3子网格的数字有效性,确保唯一解。 三个问题都运用了回溯法的核心思想,通过递归尝试、冲突检测和剪枝优化来寻找解,
2025-06-27 14:10:47
963
原创 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
577
原创 Leetcode+JAVA+回溯
本文汇总了五个经典回溯算法问题的解题思路: 组合总和(39题):通过回溯法寻找数组中可重复使用数字的和为目标值的所有组合,利用排序和剪枝优化效率。 组合总和II(40题):在不可重复使用数字的基础上,增加了去重逻辑,通过排序和跳过重复元素避免相同组合。 分割回文串(131题):使用回溯法将字符串分割为多个回文子串,每次分割都进行回文验证。 复原IP地址(93题):将数字字符串分割为四段有效IP地址段,需要严格验证每段的数值范围和格式。 子集(78题):生成数组的所有可能子集,通过回溯逐步构建不同大小的子集。
2025-06-24 16:54:37
925
原创 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
870
原创 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
649
原创 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
777
原创 nginx创建成功但是进不去页面
最能确定nginx可以访问的命令是。nginx.yml未设置就绪探针。附件:完整的nginx.yml。4.http错弄成https。端口80所用的协议是http。2.Pod未设置就绪探针。3.开启了代理服务器。
2025-04-04 17:47:46
201
原创 Leetcode BST JAVA
给你两棵二叉树:root1和root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。合并过程必须从两个树的根节点开始。[2,2][0, 2000]该算法通过递归的方式合并两棵二叉树 root1 和 root2,生成一棵新二叉树。
2025-03-26 13:43:20
581
原创 leetcode二叉树3
给定二叉树的根节点root,返回所有左叶子之和。24在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24root = [1]0[1, 1000]通过递归遍历二叉树,识别并累加所有左叶子节点的值。使用一个标志变量 flag 区分当前节点是否为其父节点的左子节点,只有当节点是叶子节点且是左子节点时,才将其值加到全局变量 sum 中。主函数从根节点开始递归,特殊处理单节点树(根节点不算左叶子),最终返回总和。
2025-03-24 16:47:13
1030
原创 二叉树leetcodeJAVA2
给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。[2,3,1]root = [][][0, 100]翻转二叉树的核心在于。从根节点开始,先将其左子树和右子树交换(使用临时变量保存其中一个子树),然后递归地对新的左子树和右子树执行相同的操作,直到遇到空节点(null)停止。整个过程通过自顶向下的递归,确保每个节点的左右子树都被正确翻转,最终返回调整后的根节点。
2025-03-20 14:28:23
783
原创 vLFS:基于学习的AI芯片虚拟化调度 论文总结
由于现有的启发式算法通常是在调度完成某个实例的所有任务后,再继续为其他实例调度任务。当某个实例的任务执行的很快,导致该实例的计算资源会闲置下来,造成资源浪费。为例能够自动调整待分配任务的数量,提出了vLFS,可以根据工作负载自动调整分配给每个实例的任务数量。核心思想是将AI芯片中的调度器设计为一个强化学习RL代理,使其能够自主学习最优调度策略。此外还设计了一种主机与设备之间的协调调度方法,以确保程序顺序和执行顺序的一致性。
2025-03-18 16:13:41
814
原创 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
1249
原创 二叉树的前序、中序和后序遍历(迭代法+递归法)
解题思路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
680
原创 Gaia+HRRN+BF对于GPU的调度
本文介绍了一种新的GPU共享和调度方法,通过暂停和恢复机制来保存和迁移模型训练状态,以及通过轻量级的采样分析来预测任务完成时间和通过高效利用碎片化资源减少了任务完成和等待时间。
2025-03-06 14:43:34
1112
原创 ESG总结
对于无服务器计算中缺乏有效的作业调度方法所带来的GPU共享、任务批处理和任务间关系不能很好的扩展的问题,提出了ESG,结合A*搜索和双刃修剪技术,在不影响质量的情况下大幅削减调度空间,不仅能够显著提高SLO命中率,也能节省很大一部分成本。无服务器平台仍以CPU为中心,忽略了GPU资源。为了在无服务器平台上为ML添加GPU支持,主流的研究利用NVIDIA MPS来促进不同函数实例间的GPU共享。但目前遇到两个重要挑战。(1)调度搜索空间的急剧扩展。
2025-03-02 14:50:11
1041
原创 GRP-HEFT:A Budget-Constrained Resource Provisioning Scheme for Workflow Scheduling in IaaS Clouds
在云中,要尽可能使用更短的执行时间运行他们的应用程序,要平衡预算,速度,工作负载等因素。在预算内找到最快工作流是要解决的问题,即异构最早完成时间HEFT。基于基本成本模型不太有希望,开始向基于小时的成本模型改变。本文目的:目标函数是最小化给定工作流的完成时间(makespan),用于基于小 时的成本模型。包括资源分配算法和调度算法。资源分配算法是从指定云提供商提供的无线资源池中获取多少和哪种类型的实例,调度程序确定将任务分配给获得的实例以及每个实例内任务的执行顺序。
2025-02-27 11:30:11
855
原创 leetcode——栈、队列
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。在这里,我们将队列存储数组元素的索引,并确保队列中的元素索引按其对应值从大到小排列。的滑动窗口从数组的最左侧移动到最右侧,每次只向右移动一位,要求返回每个窗口中的最大值。的滑动窗口从数组的最左侧移动到数组的最右侧。的字母并删除,重复执行该操作直到无法继续删除为止,返回最终的字符串。
2025-01-14 17:30:57
1112
原创 leetcode--字符串
给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。第二行为字符串 s,代表需要旋转的字符串。例如,对于输入字符串 "abcdefg" 和整数 2,函数应该将其转换为 "fgabcde"。
2024-12-17 16:23:05
734
原创 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
1249
原创 leetcode——哈希表1
原理代码 38.赎金信原理代码49.字母异位词分组原理代码 438.找到字符串中所有字母异位词原理代码 这题其实不用hash,能更好的解决,其实是滑动窗口的思想,滑动窗口能把时间复杂度降低到o(n)原理代码
2024-12-10 16:48:31
939
原创 leetcode——链表
给你单链表的头节点head,请你反转链表,并返回反转后的链表。[2,1]head = [][]链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?该算法使用的方式反转链表。
2024-12-08 22:18:23
1338
原创 leetcode--设计链表
你可以选择使用单链表或者双链表,设计并实现自己的链表。val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果是双向链表,则还需要属性prev以指示链表中的上一个节点。假设链表中的所有节点下标从开始。实现index-1valvalvalindexindexindexindex// 链表变为 1->2->3// 返回 2// 现在,链表变为 1->3// 返回 3getaddAtHeadaddAtTailaddAtIndex2000。
2024-12-04 16:32:59
386
原创 leetcode--螺旋矩阵
给定一个二维数组array,请返回「」该数组的结果。:从左上角开始,按照的顺序提取元素,然后再进入内部一层重复相同的步骤,直到提取完所有元素。north = 0west = 0螺旋遍历从左上角()开始,顺时针按“右、下、左、上”的顺序遍历二维数组。从左到右遍历,即遍历当前的北边界行。从上到下遍历,即遍历当前的东边界列。从右到左遍历,即遍历当前的南边界行。从下到上遍历,即遍历当前的西边界列。
2024-12-03 14:01:50
1291
原创 leetcode——滑动窗口
给定一个含有n个正整数的数组和一个正整数target找出该数组中满足其总和大于等于target的长度最小的02子数组[4,3]是该条件下的长度最小的子数组。
2024-12-02 16:35:47
852
原创 leetcode——移除数组
给你一个的数组nums,请你删除重复出现的元素,使每个元素,返回删除后数组的新长度。元素的应该保持。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为knumsnumsknumsnumsnumsk系统会用下面的代码来测试你的题解:// 输入数组// 长度正确的期望答案// 调用i < k;i++) {如果所有断言都通过,那么您的题解将被。函数应该返回新的长度2,并且原数组nums的前两个元素被修改为1。不需要考虑数组中超出新长度后面的元素。函数应该返回新的长度5。
2024-12-01 17:38:43
769
原创 leetcode——二分法
给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。示例 1:nums = [[3,4]示例 2:nums = [[-1,-1]示例 3:[-1,-1]nums是一个非递减数组原理该问题的目标是查找目标值target在一个已排序的非递减数组nums中的开始和结束位置。为了确保算法的时间复杂度为O(log n)
2024-11-28 15:15:37
692
原创 leetcode-数组1
给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。[3,9]这个算法通过二分查找来判断一个数num是否是完全平方数。首先,若num是 1,直接返回true,因为 1 是完全平方数。然后设置两个边界left和right,并进行二分查找。
2024-11-28 14:56:46
635
原创 异或-java-leetcode
给你两个整数,n和start。数组nums(下标从 0 开始)且。请返回nums中所有元素按位异或()后得到的结果。8数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8。"^" 为按位异或 XOR 运算符。8数组 nums 为 [3, 5, 7, 9],其中 (3 ^ 5 ^ 7 ^ 9) = 8.72。题目要求对生成的数组的所有元素进行异或,因此无需实际创建数组,而是通过累加生成每个元素的值并逐步异或累计结果。循环中,每次计算新元素(
2024-11-26 17:47:25
968
1
原创 gVMP: A multi-objective joint VM and vGPU placement heuristic for API remoting-based GPU virtualizat
本文针对上述问题,首次提出了基于API远程调用的GPU支持虚拟机和vGPU联合放置问题的多目标整数线性规划(ILP)模型,并设计了一种称为gVMP的新启发式算法,旨在减少请求拒绝率、优化资源利用率,并将性能损失降至最低。gVMP策略在效率方面表现最佳,因为它结合了性能和能耗的平衡,而基于API远程调用的First Fit和Least Load Fit策略效率最差。与最少负载适应策略相比,gVMP的性能优越,即使在高网络速度下,两者的差距有所缩小,但gVMP仍能在未来的应用中因其高局部性而保持较好的表现。
2024-11-23 21:48:15
960
2
原创 Empirical analysis of hardware-assisted GPU virtualization
然而,在处理GPU利用率变化较大的工作负载(如MUMmerGPU和组合工作负载)时,最佳努力(Best Effort)调度算法能够显著提高GPU利用率,因为它会在找到空闲的GPU时间片时调度其他虚拟机的任务,从而实现工作节省。测试结果显示,在内存可用性方面,使用PCI直通GPU时,约99.34%的总GPU内存对虚拟机可用,而使用vGPU时,仅有约93%的内存可用,这一差异表明vGPU驱动程序需要占用一定的GPU内存资源。尽管如此,由于vGPU的虚拟化开销,vGPU配置在某些情况下的延迟略高。
2024-11-18 11:32:54
950
原创 Experimental Analysis of Dedicated GPU in Virtual Framework using vGPU 论文分析
虚拟化GPU对云计算有很大的帮助,通过实验分析工作负载,多任务和不同GPU配置的情况下,从vGPU配置和调度算法方面提高了vGPU的效率和利用率,减少了执行时间。这篇论文并没有像所说的对算法进行改进,更多的是在对比vGPU和PCI直通,得出的结果是PCI直通各个方面都要更优一些,但是这些测试基准应该认真了解,对于以后的vGPU算力调度做测试的时候很有帮助。在工作负载执行方面,16个vGPU和PCI直通在不同工作负载下的时间消耗差异不大,但由于虚拟化引入的开销,vGPU模式的时间消耗略高于PCI直通模式。
2024-11-12 12:36:48
726
原创 Java中的数组
数组是一种用于存储的容器。数组的大小是固定的,一旦创建就无法更改。数组可以存储基本数据类型(如int、float、char、string)或引用类型(如对象)。数组分为一维数组和二维数组,一维数组类似数轴,每个元素占一个空间,二维数组是数组的数组,用来表示矩阵或表格数据。
2024-08-27 18:28:44
976
原创 Java:循环练习
输入一个数字,判断是否为回文,回文就是正着读和反着读都一样,如121是回文,123则不是。输入一个被除数和一个除数,要求在不利用乘法、除法、取余的情况下得到商和余数。输入一个大于等于2的整数,返回其平方根,结果只保留其整数部分,小数部分舍去。输入一个正整数,判断是否为质数,质数只能被1和本身整除,否则叫合数。不断输入数字,通过猜大了猜小了提示以此来猜对系统提供的数字。关于random模块,之间的随机整数,包括。
2024-08-21 23:24:15
665
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人