- 博客(54)
- 收藏
- 关注
原创 动态规划(6)下降路径最小值
可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。如图所示,为和最小的两条下降路径。,请你找出并返回通过。
2025-05-25 21:46:53
172
原创 Spring MVC 的的核心原理与实践指南
通过其清晰的架构和丰富的功能集,开发者可以快速构建从简单到复杂的企业级应用。Spring MVC 是 Spring 框架中的一个重要模块,用于构建基于 Java 的 Web 应用程序。它遵循模型-视图-控制器(MVC)设计模式,提供了一种结构化的方式来开发灵活、松耦合的 Web 应用。随着 Spring Boot 的普及,Spring MVC 的开发变得更加简单高效,但底层原理仍然不变。无论是传统的 Web 应用还是现代的 RESTful 服务,Spring MVC 都是一个值得信赖的选择。
2025-05-25 20:18:35
942
2
原创 动态规划(5)路径问题--剑指offer -珠宝的最大值
从 dp[i][j]表示:到达【i,j】位置1时候,此时的最大值。注意:珠宝的价值都是大于 0 的。除非这个架子上没有任何珠宝,比如。路径 1→3→5→2→1 可以拿到最高价值的珠宝。1.里面的值,要保证后面的填表是正确的。题目: 现有一个记作二维矩阵。为该位置珠宝的价值。
2025-05-04 21:16:23
309
原创 数据结构(4) 堆
通过本文的C、Java和Python实现,我们可以看到不同语言中堆的实现虽然语法不同,但核心逻辑是一致的。堆(Heap)是一种非常重要的数据结构,在优先队列、堆排序、图算法等领域有着广泛的应用。2. 删除堆顶元素:将堆顶元素与末尾元素交换,删除末尾元素,然后向下调整(heapify down)- 最大堆(大顶堆):每个节点的值都大于或等于其子节点的值。- 最小堆(小顶堆):每个节点的值都小于或等于其子节点的值。5. 中位数查找:使用两个堆(最大堆和最小堆)可以高效查找中位数。1. 堆是一棵完全二叉树。
2025-05-04 17:54:25
579
原创 数据结构(3)二叉树(3)
中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(初步转化后得到 "1(2(4)())(3()())" ,但省略所有不必要的空括号对后,字符串应该是"1(2(4)),请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。给定一个二叉树的根节点。
2025-05-02 21:56:22
398
原创 动态规划(4)路径问题--不同路径
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。网格的左上角 (起始点在下图中标记为 “Start” )。从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下。2. 向下 -> 向下 -> 向右。3. 向下 -> 向右 -> 向下。题目: 一个机器人位于一个。问总共有多少条不同的路径?
2025-05-02 19:29:55
149
原创 操作系统(1)多线程
一个进程可以包含多个线程,这些线程共享进程的资源(如内存空间、文件描述符等),但每个线程拥有自己独立的程序计数器、寄存器集合和栈空间。当多个线程同时访问共享资源且至少有一个线程进行写操作时,如果没有适当的同步机制,程序的执行结果可能依赖于线程调度的顺序,导致不可预测的行为。高优先级线程被低优先级线程阻塞,因为低优先级线程持有了高优先级线程需要的资源,而中间优先级的线程又抢占了低优先级线程的CPU时间。与进程相比,线程的创建、切换和销毁开销更小,这使得线程成为实现并发编程的高效工具。
2025-05-01 21:07:10
1375
原创 动态规划(3)(java)斐波那契数列模型:解码方法
它可以解码为 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6)。已编码的消息时,你意识到有许多不同的方式来解码,因为有些编码被包含在其它编码当中("06" 无法映射到 "F" ,因为存在前导零("6" 和 "06" 并不等价)。它可以解码为 "AB"(1 2)或者 "L"(12)。如果没有合法的方式解码整个字符串,返回。注意,可能存在无法解码的字符串。的消息通过以下映射进行了。题目数据保证答案肯定是一个。
2025-05-01 19:29:12
211
原创 动态规划(2)(java)斐波那契数列模型:最小花费爬楼梯
1.先到达i-1的位置,然后·支付cost【i-1】,走一步,dp【i-1】+cost【i-1】2.先到达i-2的位置,然后·支付cost【i-2】,走一步,dp【i-2】+cost【i-2】保证填表的时候不越界dp[n-1]=cost【n-1】,dp[n-2]=cost【n-2】1.支付cost【i】,往后走一步,从i+1的位置出发到终点。2.支付cost【i】,往后走两步,从i+2的位置出发到终点。dp【i】表示:从i位置出发,到达楼顶,此时的最小花费。dp【i】表示:到达i位置时,最小花费。
2025-04-27 11:19:55
160
原创 动态规划(1)(java)(面试题)斐波那契数列模型:三步问题
有个小孩正在上楼梯,楼梯有 n 阶台阶,小孩一次可以上 1 阶、2 阶或 3 阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模 1000000007。dp【i】表示:到达i位置时,一共有多少种方法。以i位置的状态,最近的一步,来划分问题。
2025-04-25 21:14:27
241
原创 数据结构(java)二叉树的基本操作
3.对于任何一个二叉树,如果其叶结点个数为 nO,度为2的非叶结点个数为n2,则有n0=n2+1。5.对于具有n个结点的完全二叉树,如果按照从上至下从左至右的顺序对所有节点从0开始编号,则。2.若规定只有根节点的二叉树的深度为1,则深度为K的二叉树的最大结点数是2都k次方-1。1.若规定根结点的层数为1,则一棵非空二叉树的第i层上最多有2*-1(i>0)个结点。若i>0,双亲序号:(i-1)/2;若2i+1<n,左孩子序号:2i+1,否则无左孩子。若2i+2<n,右孩子序号:2i+2,否则无右孩子。
2025-04-25 10:40:32
489
原创 数据结构(java)栈与队列
需要判断 出栈的元素 和 栈顶元素是否相同,相同则最小栈也要出栈。2.如果要放的的元素小于等于最小栈栈顶元素可以放吗?*如果最小栈的栈顶元素没有当前的元素小,则。*如果最小栈是空的,那么。
2025-04-16 20:38:45
548
1
原创 贪心算法(19)(java)重构字符串
检查是否能重新排布其中的字母,使得两相邻的字符不同。的任意可能的重新排列。若不可行,返回空字符串。题目:给定一个字符串。
2025-04-14 20:32:02
333
原创 贪心算法(18)(java)距离相等的条形码
请你重新排列这些条形码,使其中任意两个相邻的条形码不能相等。你可以返回任何满足该要求的答案,此题保证存在答案。先处理出现次数最多的那个数,剩下的处理顺序无所谓;在一个仓库里,有一排条形码,其中第。2.摆放的时候,每次隔一个格子。1.每次处理一批相同的数。
2025-04-14 20:05:33
935
原创 贪心算法(17)(java)可被三整除的最大整数和
选出数字 1, 3, 4 以及 4,它们的和是 12(可被 3 整除的最大和)。选出数字 3, 6, 1 和 8,它们的和是 18(可被 3 整除的最大和)。4 不能被 3 整除,所以无法选出数字,返回 0。,请你找出并返回能被三整除的元素。解法:正难则反+贪心+分类讨论。
2025-04-09 20:22:31
292
原创 贪心算法(16)(java)俄罗斯套娃信封问题
当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。2.当左端点相同的时候,按右端点从大到小的顺序排列;步骤:1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值。信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。重写排序:1.当左端点不同的时候,按左端点从小到大的顺序排列;题目:给你一个二维整数数组。解法1:常规解法->动态规划。解法2:重写排序+贪心+二分。个信封的宽度和高度。
2025-04-07 20:53:33
836
原创 贪心算法(15)(java)用最小的箭引爆气球
排序+贪心策略(最少的弓箭数量->一支箭应该引爆更多的气球->将互相折叠的所有区间都拿出来引爆。有一些球形气球贴在一堵用 XY 平面表示的墙面上。-在x = 11处发射箭,击破气球[10,16]和[7,12]。- 在x = 2处发射箭,击破气球[1,2]和[2,3]。- 在x = 4处射出箭,击破气球[3,4]和[4,5]。-在x = 6处射出箭,击破气球[2,8]和[1,6]。处射出一支箭,若有一个气球的直径的开始和结束坐标为。你不知道气球的确切 y 坐标。每个气球需要射出一支箭,总共需要4支箭。
2025-04-02 21:21:31
1014
原创 贪心算法(14)(java)无重叠区间
你需要移除两个 [1,2] 来使剩下的区间没有重叠。需要移除区间的最小数量,使剩余区间互不重叠。移除 [1,3] 后,剩下的区间没有重叠。题目:给定一个区间的集合。只在一点上接触的区间是。解法:排序+贪心算法。
2025-03-31 20:51:51
482
原创 贪心算法(13)(java)合并区间
区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].2.根据排序后的结果,总结规律,进而得出解决这个问题的策略;一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回。1.排序:左端点或右端点排序;3.贪心策略:求并集。
2025-03-31 17:32:06
455
原创 贪心算法(12))(java)坏了的计算器
给定两个整数 startValue 和 target。返回显示数字target所需的最小操作数。解释: 先进行双倍运算,然后再进行递减运算{2->4-> 3},输入: startValue = 2,target =3。·递减(Decrement):将显示屏上的数字减1.·双倍(Double):将显示屏上的数字乘2;解法:正难则反+贪心。
2025-03-26 19:28:14
729
原创 贪心算法(11)(java)加油站
你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油 cost[i]升。从3号加油站(索引为3 处)出发,可获得4升汽油。输入:gas = [1,2,3,4,5],cost = [3,4,5,1,2]开往 3号加油站,你需要消耗5升汽油,正好足够你返回到3号加油站。开往 2 号加油站,此时油箱有6-4+3=5升汽油。开往 4号加油站,此时油箱有4-1+5=8升汽油。开往 1号加油站,此时油箱有7-3+2=6升汽油。开往0号加油站,此时油箱有8-2+1=7升汽油。
2025-03-24 20:32:35
714
原创 贪心算法(10)(java)跳跃游戏
给定一个长度为n的0索引整数数组nums。初始位置为nums [0]。每个元素nums[i]表示从索引i向前跳转的最大长度。返回到达 nums[n-1)的最小跳跃次数。生成的测试用例可以到达 nums [n- 1]。解法:1.贪心策略(不推荐)
2025-03-20 17:11:36
825
原创 贪心算法(9)(java)最优除法
但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。你需要找出怎么添加括号,以便计算后的表达式的值为最大值。给定一正整数数组 nums,nums中的相邻整数将进行浮点除法。例如,[2,3.4]->2/3/4.例如,nums =[2,3,4],我们将求表达式的值“2/3/4"。注意:你的表达式不应该包含多余的括号。贪心策略:除了前两个数以外,其余数全放在分子上即可。暴力解法->递归->记忆化搜索->动态规划。输出:”1000/(100/10/2)”输入:【1000,100,10,2】
2025-03-19 19:28:46
570
原创 贪心算法(8)(java)最长回文串
题目:给定一个包含大小写字母和小写字母的字符串s,返回通过这些字母构造的最长回文串。输入s=”abccccdd"输出7。可以构造最长回文串是“dccaccd"
2025-03-18 22:56:12
80
原创 贪心算法(7)(java) 分发饼干
对每个孩子i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸 s[j]。如果 s [j] >= g[i],我们可以将这个饼干了分配给孩子i,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。题目:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。排序,针对当前胃口最小的孩子,然后挑选饼干;2.不能满足,直接删掉这个饼干;1.能满足,直接喂;
2025-03-17 20:15:55
1123
2
原创 贪心算法(6)(java)优势洗牌
题目: 给定两个长度相等的数组nums1和nums2,nums1相对于nums2的优势可以满足nums1【1】>nums[2]的索引的数目来描述。1.如果比不过,就去拖累到对main最强的哪一个;2.如果能比过,那就直接比;返回nums1的任意排列,使其相对于nums2的透视最大化呀。
2025-03-14 10:35:10
941
原创 贪心算法(5)(java)k次取反后最大化的数组和
题目:给定一个整数数组 `nums` 和一个整数 `k`,你可以进行最多 `k` 次取反操作。每次操作可以选择数组中的一个元素并将其取反(即 `x` 变为 `-x`)。最终返回经过 `k` 次取反操作后,数组可能的最大总和。...奇数:挑选当前数组中最小的数,变成负数。设:整个数组中负数的个数是m个。: 把前k小负数转化成正数。:把所有负数全部转化成正数。..先把所有负数变成正数。...偶数:直接忽略。
2025-03-11 20:01:53
536
原创 贪心算法 (3)(java)摆动序列。
给定一个整数数组 `nums`,找到其中最长的摆动子序列的长度。摆动子序列是指序列中相邻元素的差值符号交替变化(即正负交替)。贪心:估计出所有的波峰以及波谷的个数。
2025-02-26 12:22:15
369
1
原创 贪心算法(java)(2) 将数组中元素减半直到元素的总和减半的最小操作次数。
【代码】贪心算法(java)(2) 将数组中元素减半直到元素的总和减半的最小操作次数。
2025-02-19 17:59:02
408
原创 贪心算法(java)(1) 柠檬水找零。
如果顾客支付20美元,优先使用10美元和5美元的组合进行找零(如果有的话)。如果手头没有5美元钞票,返回 `false`。否则,减少 `five` 的计数并增加 `ten` 的计数。每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。1. 初始化:使用两个变量 `five` 和 `ten` 来记录手头的5美元和10美元钞票的数量。3. **返回结果**:如果所有顾客都能成功找零,返回 `true`。- 如果顾客支付5美元,直接收取,增加 `five` 的计数。注意,一开始你手头没有任何零钱。
2025-02-13 13:00:28
712
原创 计算分数的值(1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100) 的值
【代码】计算分数的值(1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100) 的值。
2025-02-10 12:52:45
109
原创 用java写一个水仙花数
求出0~n之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本 身,如;153=1^3+5^3+3^3,则153是一个“水仙花数“。
2025-02-10 11:32:12
423
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人