- 博客(414)
- 资源 (1)
- 收藏
- 关注
原创 背包价值问题
有n个重量和价值分别为wi,vi的物品,从这些物品中挑选出重量不超过W的物品,求所有挑选方案中价值总和的最大值。①挑选w4,可挑选的物品变为w1,w2,w3,总重量不超过W-w4。一开始,可挑选的物品有w1,w2,w3,w4,总重量不超过W。②不挑选w4,可挑选的物品变为w1,w2,w3,总重量不超过W。每次挑选一种物品,有两种情况:挑选和不挑选。
2025-01-16 10:01:52
213
原创 数字三角形
在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。只需要求出这个最大和即可,不必给出具体路径。三角形的行数大于1小于等于100,数字为 0 - 99。形状像树,可以用递归求解。在往下走的过程中,在岔路口,有两种选择,一种往右走,一种往左走。所以要比较往左路径与往右路径哪个更划算。
2025-01-16 09:26:45
133
原创 最长递增子序列
要求4 2 3 1 5的最长递增子序列,先求4 2 3 1 的递增子序列,结果是2 3。然后比较5是否比3大,如果是的话,4 2 3 1 5的最长递增子序列就是2 3 5。输出3 (因为 2 3 5 组成了最长递增子序列)输入 4 2 3 1 5。
2025-01-14 09:58:06
313
原创 最长公共子序列
要求"A1B26C"和"A34B5C"的最长公共子序列,可以先求。“A1B26C"和”"的最长公共子序列长度为0.①"A1B26C"和"A34B5C"②"A1B26"和"A34B5C"③"A1B26C"和"A34B5"④"A1B26"和"A34B5"dp[6][6]就是本题的解。
2025-01-14 09:51:47
168
原创 N皇后问题
答:同一正对角线的行数-列数相等,同一负对角线的行数+列数相等。解释:如上图所示,4 皇后问题存在两个不同的解法。问:如何用一维数组记录皇后位置?问:如何判断格子在同一对角线?答:下标记录行号,值记录列号。
2025-01-09 09:47:30
162
原创 互质奥数题
100},求最小的正整数n,使得S的每一个n元子集都含有4个两两互质的数。{①,②,③,④}中有2个落选,记为x,y。∴{①,②,③,④}中有1个落选,记为x。Ⅰ,4个及以上∈A,71个∈B。综上,均存在两两互质的4个数。综上,均存在两两互质的4个数。∴属于A的四个元素两两互质。{①,②,③,④}全部选上。令B={①,②,③,④}Ⅱ,3个∈A,72个∈B。Ⅲ,2个∈A,73个∈B。Ⅳ,1个∈A,74个∈B。
2025-01-09 09:46:45
508
原创 乘船的问题
有n个人,第i个人重量为wi,每艘船的最大载重量均为C,且最多只能载两个人。用最少的船装载所有人。采用贪心策略,在选择人时,不是选最重的就是选最轻的。这个题目先选一个最轻的,再选
2025-01-06 08:44:58
205
原创 集合奥数题
集合A的元素都是正整数,其中最小的是1.最大的是100.除1以外,每一个元素都等于集合A中的两个数(可以相同)的和,求集合A的元素个数的最小值。∴A={1,2,3,a3,a4,a5,a6,100}或{1,2,4,a3,a4,a5,a6,100}∴A={1,2,3,4,a4,a5,a6,100}或{1,2,3,5,a4,a5,a6,100}∴A={1,2,4,5,a4,a5,a6,100}或{1,2,4,5,6,a5,a6,100}构造如下:A={1,2,3,6,12,24,25,50,100}
2025-01-06 08:42:59
400
原创 合并区间题目
可以发现这样一种现象:①区间和②区间不可以合并,那么③区间的起点一定是>=4的,所以③区间也不可以和①区间合并。同理④区间以及以后的区间更不可能和①区间合并。那么我们遍历①②③…区间,每次遇到不可以合并的区间,就说明结果集中需要增加一个新区间。先按照每个区间左端点排序。
2024-12-20 11:41:10
299
原创 搜索旋转排序数组
在有序区间中找target很容易,只需要比较target和两个端点即可。如果target不在有序区间中,那么它就在无序区间中。有序的区间左端点右端点。将数组一分为二,一半是有序的,另一半是无序的。
2024-12-20 11:40:30
145
原创 盛最多水的容器
给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height)。正确答案是收缩短的垂线才可能使得面积变大,收缩长的垂线只会使得面积变小。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。如果两端是这种情况,那么收缩长的垂线还是收缩短的垂线呢?要使得面积最大,从距离最远的两端开始向内收缩找最大值。输入:[1,8,6,2,5,4,8,3,7]返回容器可以储存的最大水量。说明:你不能倾斜容器。
2024-12-13 10:13:37
189
原创 最长回文子串
有两种情况:回文子串长度为奇数,中点指向一个字符。长度为偶数,中点指向两个字符中间。先在b站上学习算法入门视频,然后再做此类题目会更加容易。两个指针从候选回文子串的中点开始向两边扩散。2.中点指向两个字符中间。1.中点指向一个字符。
2024-12-13 10:13:09
242
原创 第k个元素
再在左边选一个候选中值2,,比它小的放在它的左边,比它大的放在它的右边,arr={1,2,5,3,4,6,10,7,8,9}。候选中值的排名是2,那么第4个元素在它的右边。先选择一个候选中值6,比它小的放在它的左边,比它大的放在它的右边,那么该候选中值的排名可以知道是6。那么第4个元素在左边。以尽量高的效率求出一个乱序数组中按数值顺序的第k个元素值。先排序,再找出第k个元素。
2024-12-10 09:20:47
577
原创 超过一半的数字
数组中有一个数字的出现的次数超过了数组长度的一半,找出这个数字。先排序,中间值就是答案。为了练练手,用的基数排序。统计每个数字出现次数。
2024-12-10 09:12:59
173
原创 逆序对个数
一个数列,如果左边的数大,右边的数小,则称这两个数为一个逆序对。求出一个数列中右多少个逆序对。在归并排序的过程中,如果左半部分的数大于右半部分的数,则出现了逆序对,并且不止一个。暴力遍历所有可能的数对。
2024-12-08 15:20:23
588
原创 调整数组顺序使奇数位于偶数前面
输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)指针i起点是数组起点,当i检测到偶数时停下。j的起点时数组终点,当j检测到奇数时停下,交换i和j处的元素。
2024-12-08 15:19:56
336
原创 需要排序的子数组
如输入:arr={2,3,7,5,4,6},返回4,因为只有{7,5,4,6}需要排序。前端小于最小波谷(3)的部分线段不用排序,所以{2,3}不用排序。后端大于最大波峰(7)的部分线段不用排序,所以{8,9}不用排序。给定一个无序数组arr,求出需要排序的最短子数组长度。注意,起点可能是波峰,终点可能是波谷。
2024-12-06 09:10:49
427
原创 数组能排成的最小数
输入一个正整数数组,把数组里所有整数拼接起来排成一个数,打印出能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字为321323。这就要比较332和323哪个小了。这题的排序规则并不是比大小。3和32哪个数字排前面呢?
2024-12-06 09:10:23
292
原创 最大子矩阵
给定一个NxM的矩阵A和一个整数K,小Hi希望你能求出其中最大(元素数目最多)的子矩阵,并且该子矩阵中所有元素的和不超过K。子矩阵的高度和宽度都是不确定的,我们只能确定下来高度(假设讨论高度=1的情况),然后再求最大宽度。宽度的左边界可以以1为起点,可以以2为起点,可以以3为起点.用for循环实现。高度为2的情况,高度为3的情况等等随后再讨论。
2024-12-04 09:19:00
198
原创 子矩阵最大累加和
拿前两行举个例子:第一列-1+(-1)=-2,它不可能在最大子矩阵中(反证法:假设它在最大子矩阵中,把它丢弃岂不是更大)。第2列-1+2=1,有可能是最大值,做个记录。第3列与第2列的累加和-1+2+(-1+2)=2,有可能是最大值,再做个记录。一行和三行的情况也是同理。给定一个矩阵matrix,其中的值有正、有负、有0,返回子矩阵的最大累加和。例如,matrix为。
2024-12-04 09:18:21
598
原创 hiho字符串
j从i+1开始找以i开头,恰好囊括两个h,1个i,1个o的最短字符串。因为上一次循环后的值是恰好囊括两个h,1个i,1个o的字符串,j如果在该值前面的话,就会可能缺少某一个[h,i,o]。找到S的所有子串中,最短的hiho字符串是哪个,输出该子串的长度。如果一个字符串恰好包含2个’h’、1个’i’和1个’o’,我们就称这个字符串是hiho字符串。现在给定一个只包含小写字母的字符串S,小Hi想知道S的所有子串中,最短的hiho字符串是哪个。对于80%的数据,S的长度不超过1000。时间限制:10000ms。
2024-12-02 10:35:39
277
原创 子数组最大累加和
{3,5,-2,6}的左侧是子数组{1,-2},它的累加和是负数。很显然的道理,左侧去掉的部分累加和一定是一个负数。如果不是的话,左侧去掉的是正数,那加回来一定更大。观察{3,5,-2,6}的两端边界特点,可以发现,它的两端都是正数,而两端外侧都是负数。那么可以说左边界[负数,正数],右边界[正数,负数].例:arr={1,-2,3,5,-2,6,-1};所有的子数组中{3,5,-2,6}可以累加出最大的和12,所以返回12。给定一个数组arr,返回子数组的最大累加和。
2024-11-27 09:58:10
283
原创 用堆求解最小可用ID问题
在非负数组(乱序)中找到最小的可分配的id(从1开始编号)数据是1000000。第一个最小值是1,第二个最小值是2,第三个最小值是4.那么最小可用ID是3.可以用小顶堆求每次的最小值。
2024-11-27 09:57:46
226
原创 第k个元素
以第二个元素举例,在该元素之前的元素一定比它小,在该元素之后的元素一定比它大。那就可以用快速排序分区的思想来解决,每次选定第一个元素为中间值,将比该元素大的放到左边,比该元素小的放到右边。以尽量高的效率求出一个乱序数组中按数值顺序的第k个元素值。
2024-11-20 09:11:58
165
原创 最小可用ID
在非负数组(乱序)中找到最小的可分配的id(从1开始编号)数据是1000000。缺少的数字也是出现次数为0 的数字,用一个辅助数组统计数字出现的次数就能求解。可能是缺少开头的1,也可能缺少中间的4。
2024-11-20 09:11:30
242
原创 旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{2,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.画一条绿色中点线,可以发现最小值出现在红白相间的一边。红色的区域可以舍弃掉,而红色区域是完全递增数组。这种解法只能求解数组元素不重复的情况,重复的话需要将数组元素全部比较一次。有两种切割方法,一种是右边多切一点,另一种是左边多切一点。看到“递增数组”和“查找最小值”,就要想到二分法。
2024-11-15 09:27:40
328
原创 算法学习笔记
有19个数字,其中18个数字两两重复,请找出单独的那一个数字。(1,10,10,7,7,4,3,2,5,6,5,2,1,6,4,3,8,9,8)解题思路:x与x的异或结果是0,这说明通过异或运算可以消除两个重复的数字。那么剩下的一个就是单独的数字。
2024-11-12 09:12:24
99
原创 将整数的奇偶位互换
就拿整数9举例,它的二进制是1001。前半部分的10交换后变成01,后半部分的01交换后变成10。组合起来就得到了0110。将原数字的奇数位左移一位,将原数字的偶数位右移一位。再用异或运算组合在一起就是奇偶位互换的结果。1001&0101=0001结果消除了偶数位(将偶数位变成0),保留了奇数位。1001&1010=1000结果消除了奇数位,保留了偶数位。
2024-11-12 09:12:00
244
原创 若依管理系统案例:定时任务
ruoyi-quartz模块的com.ruoyi.quartz.task包下创建MyTask类。重启项目,进入菜单“系统监控-定时任务”,点击新增任务,填写必要信息。启动定时任务之后,便能在控制台看到输出的时间。每间隔5秒,控制台输出系统时间。
2024-11-07 09:25:27
420
原创 go语言接口设计三国人物
请设计一个接口Person,然后设计两个结构体实现Person接口,这两个结构体都代表三国时代的名人。Person接口中有一个方法,该方法输出一句最能代表该人物特点的话。
2024-10-09 09:05:46
646
原创 mybatis安装过程梳理
3.配置文件(mybatis-config.xml)中引用映射文件。2.映射文件(UserMapper.xml)中引用实体类。这篇文章对mybatis官网上的安装过程进行一个梳理。1.创建实体类(User.java)3.主函数中读取配置文件。
2024-09-18 09:27:46
243
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人