自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 2023-12-11

有点像三数之和的题目,也是来一个循环,将一个记为后面的数,一个写为最后一个,与target比较,大的时候右边的指针左移,小的时候左边的指针右边移动,相等时,指针同时收缩。采用动态规划算的时候,以i结尾的最大子序和定义,有两个途径分别可以得到,一个是上一个加上当前的值,另外一个直接是当前的值,通过取最大来决定。通过加的每一个正数与result进行比较。有点像贪心算法,初始放在最两头,计算结果,然后如果左边的比较小,就让他向右移动,如果右边的比较小,就让他向左移动,这样得到一个最大值。见日历,与匹配类似。

2024-01-16 15:13:35 333

原创 2023-12-10

用动态规划,dp[i]表示i之前包括i的以Nums[i]结尾的最长递增序列长度,递增公式见日历。与之前思路一致,进行两次循环,也要注意从1开始到nums1.length;具体见日历,要注意从1开始循环的话,nums1.length+1是边界。分析一下,也就是相当于求两个序列的最长公共子序列。与无限次购入是一致的,就是要减去fee,见日历。1,买卖股票含手续费。

2024-01-16 12:38:57 384

原创 2023-12-9

找规律,与上述只能买卖两次思路一致,通过判断奇偶进行幅值,最后取一个最大值。与上一题思路一致,考虑两种情况,考虑首和考虑尾,然后取最大。定义dp[i]表示偷包括i在内的房屋,最多的金额dp[i];用动态规划算法,已经用过贪心算法算过一次。四种状态,分别分析,与上题相似,见日历。如果不偷第i个:=dp[i-1]3,买卖股票最佳时机II。

2024-01-15 20:15:32 361

原创 2023-12-8

见日历,与之前思路一致,要么向下走一步到,要么向右走一步到,因此写出公式,二维数组来标志,初始化第一行和第一列都是1种方式。见日历,递推公式为dp[i] = dp[i-1]+dp[i-1];日历,函数变成了加上花费两种方式下取最小,程序与上一题基本一致。见日历,思路与之前一致,五步法。将题目转变为01背包问题。

2024-01-15 11:15:43 352

原创 2023-12-7

如果直接在第一遍遍历中就把赋值9写进去的话,就会出现问题,比如100,答案就会是90,而不是99了。然后进行遍历,得到从开始遍历到现在所记录到的最远位置,如果与当前遍历的索引已知,就截出这一段。这道题与弓箭射气球的题类似,程序几乎可以不发生改变,只有判断条件加上等于,认为,1,2和2,3不算在里面,弓箭的数量相当于是非交叉区间的数量,用总的减去弓箭数量就是最终的结果。与射箭一样判断有没有重叠,再合并,其实就是用合并区间后左边界和右边界,作为一个新的区间,加入到result数组里就可以了。

2024-01-04 11:04:14 387

原创 2023-12-6贪心算法继续

一边一边考虑,确定一边后,再确定另外一边,先从左到右,从最前面遍历;从右到左的时候,从最后面遍历。有几个细节,首先要给第一个位置1个糖果,其次,当从左向右遍历没有出现满足条件的结果时,count也要赋值1,另外,倒叙遍历的时候,需要取二者最大值,以满足条件。当移动下标达到了当前覆盖的最远距离的时候,如果当前就是这个最远的,那么就不用再跳了,如果不是要再加一。数组最大:把绝对值最大的负数变成正的,如果把所有负数都变成正数了,k还是没有用完,那么假设k是奇数,就需要转变最小的现在有的正整数,这样损失可以最小;

2024-01-04 09:20:57 361

原创 2023-12-5 贪心算法

注意在for循环比较的时候,不能直接写数组的长度,因为有可能从前面的到不了后面的位置,因此i<=count,count要随时更新到最远的距离,也就是如果i+nums[i]>count的话,将值赋给count。贪心:当前面的和是负数的时候,就说明到目前为止的和对后面的数字来说都是负担,因此,应当从下一个开始重新计数,将sum重新置零。上下坡中有平坡,【1,2,2,2,1】,就有pre<=0,cur>0的情况。删除一些节点,可以简单画一下,删除的是单调递增或者递减上的除了两端的点。4,买卖股票的最佳时机ii。

2023-12-20 19:43:15 29

原创 2023-12-04

删除重复的,对a的比较,如果现在与前一个相等,跳过这个i,right和left与前一个和后一个分别一样的时候,也挪动。用到了map,对所有的遍历,动态控制一个长度为26的数组,对每一个遍历的都能够得到一个键值,如果map里不包含此键值,就放进去,获得键值后add里面。用到了hash.add函数,当它的值返回false的时候,表明哈希表里面已经存在这个数字,所以就应当返回false了。steps:定义unordered_map,key为a和b两数之和,value为a和b两数之和出现的次数;

2023-12-19 19:45:25 26

原创 2023-12-3

与上题思路一致,从0开始,每次截取p长度的字符串,先根据p统计出来一个26长度的数组,里面记录了各个字符的次数,再将截取字符串出来的构造出来26长度的索引,进行比较,当完全一致的时候,add(count)。设置一个26长度的数组,对每一个字符-’a‘加1,再在t上--;如果最终恢复到纯0状态,则满足要求。4,哈希表专题:用来快速判断一个元素是否出现在集合里,包括数组,set,map。注意size--的位置;

2023-12-19 11:31:56 28

原创 2023-12-2

分别用了,String.indexOf(),找到相应的索引;用双指针法,设置i,j,如果name(i)与typed(j)一致,i与j都加一,如果不一致,但是typed(j)与前面的一个值相等,那么j加一,其他的就返回false,最终如果i==name的长度,就表示完成了匹配。算法:如果第一个是I,那么就给出从0-n最小的数,这样不论如何都会满足要求,如果是D,就给出最大的数,同样,随着向后的过程不断控制最小和最大数的范围。注意理解题意,当出现不符合的时候就break。Hashset的add,

2023-12-14 10:51:27 16

原创 2023-12-1

先用split(" ")把它通过空格分隔为字符串数组,再将每一个字符串通过函数处理反转,随后,append加一起,加空格,对最后一个单词坐=做特殊处理;判断当A大于2的时候,return false;for(< length-2)的时候,判断如果存在连续三个都是迟到,false;遍历,用StringBuilder,注意转化的时候()-'A'+'a'的前面要强制转换一下(char);先排序,利用窗口滑动法,当发现差大于1的时候,左边的++,当相等的时候,取右边-左边+1;

2023-12-03 12:24:01 29 1

原创 2023-11-30

s和t,设置两个一个index1,一个index2,当相等的时候,都加一,当不相等的时候,index2加一,如果最终index1加到了一样的长度,那么说明是子序列的。与之前思路一致,统计每一个的个数,当大于1的时候,取偶数的加起来,如果最后的长度小于原有的,就再加一,如果没有就不加。当前不是空格,下一个是空格算一个词,处理一下空的,返回0;如果最后一个不是空格,最后的结果加一。按照第一个和第二个的大小写字母情况判断,注意要写出只有一个元素时候的情况。直接判断,创建一个list。

2023-11-30 21:31:48 25

原创 2023-11-29

只要保证magzine中的每一个出现的字母次数都大于等于ransomNote中出现的次数,所以定义了一个26个数组,对每一个字母减去‘a’,碰到的时候++,即统计了每个出现的次数。对数组先排序,然后设置index1,index2,和index添加的一个顺序,当相等的时候,判断如果是0或者是和前一个一样,就不添加,直接移动;再判断大小,小于他的时候右移,相反。与之前思路一致,创建2个26长度的int数组,对每一个字符,减去‘a’++,对s和t都做处理之后,对数组进行遍历,当出现不相等的时候,就是多出来的。

2023-11-30 16:58:27 32

原创 2023-11-28

为了简单计算,设置一个n+1长度的数组,其中每个值为它前面的所有值,设置为n+1是为了避免对索引为0处的处理,则每次加的时候,直接 right+1的值减去left的值就可。分析,当相交的时候,假设headA不相交部分有a个节点,headB不相交部分有b个节点,公共有c个节点,即a+c=m;用左右两个flag来标志,当右边找到元音的时候,左边也找到,交换,同时移动,注意判断条件,left<right;若pA为空,则将pA移动到headB的头节点,若pB为空,则将pB移动到headA的头节点,

2023-11-30 11:11:02 26

原创 补充2023-11-27

创建一个哑节点,可以避免讨论头结点是否被删除的情况,直接哑节点.Next。思路可以搞定,注意头节点,判断是否是null的问题。前面的是下一个,,再逐渐平移;

2023-11-29 18:54:55 33 1

原创 2023-11-27继续

窗移动法,取一个与fruits多一个的数组,标记,当出现它的时候,加一,当种类大于两个的时候就要减去1,然后左边的目标位移动。与之前思路一致,但是需要做情况判断,后续阅读题解。

2023-11-28 22:51:51 22

原创 字符串题目2023.11.26

将两个拼接起来,如果满足条件的话,肯定能在拼好的字符串里发现与原来单个字符串一致的子字符串,在查找前需要将首位和末尾去掉,以免寻找到本来的字符串。顺时针画矩阵过程:填充上行从左到右,右列又上至下,下行从右到左,左列从下到上,画一圈,在每一行或者列都坚持左闭右开的原则,用loop循环标志写。采用加窗的方法,用for循环来断定右边的一个标志位,当和大于target时,将前面的flag向后移一位,每次取比较短的长度。先找到第一个位置,然后重新开始小的遍历,注意处理特殊的 情况。

2023-11-26 21:38:53 28 1

原创 2023.11.1

定位最后一个单词的end,最后一个单词的start,从最后一个,以不是空格了为分界线定义end;然后将end赋值给start,从第一个不是空格定义start;自己的思路是,如果有两个及以上的个数的话,先比较第一个和第二个,然后将得到的公共的与后面的每一个比较,每次都只比较长度小的那个部分;思路是把长的字符串截出需要对比的长度,然后比较是否一样;然后,把每一个和前面比较,如果小的在前面就减,如果在后面就加。3.找出字符串第一个匹配的下标。用了switch(arr){4,最后一个单词的长度。

2023-11-01 23:38:10 17 1

原创 记录以下逢七过

System.out.println("过!System.out.println("过!

2023-10-22 22:15:48 32 1

原创 2023年10月9日

如果位数时1,则唯一一个数字为0;若大于1,则从0 -> n-1写入从1-数字,最后一个数字为相应的和的负数,这样满足要求。设置一个flag,达到数量时,直接break。一直÷10,到不等于0,然后计算count;与之前一致,取余和÷10;

2023-10-09 11:02:52 28 1

原创 2023年10月8日

递归,当倒数第三个位置为0的时候说明只剩两个了,就可以返回,如果只有一个单拎出来说,剩下的递归,每次从小到大排序,用最大的减去最小的。最直接的方法,复制一个数组,然后排序,把不相等的找出来加1;暴力法,当遇到零的时候,逐个向后平移。和之前的分析方法一样。

2023-10-08 20:58:42 18 1

原创 2023年10月7日

三个数,比较的话,先排序,一共两种情况,三个正数或者两个负数一个正数,两个负数就是选择最小的两个负数与最大正数的成绩,这两种情况进行对比,给出一个最大的。先排序,然后找出一共有几种,再比较。在用冒泡排序的时候,有超出时间限制的情况,最终用Arrays.sort(candyType);二分法查找,还是要注意在改变left和right的位置的时候,-1和+1的设置;先找到一个最大值的点,分情况,前面的都要一个比一个大,后面的都要一个比一个小。排序找到前后两个一样的,然后就是这个数。

2023-10-08 10:28:43 27 1

原创 2023.9.21

和之前思路一样,如果他是奇数,就把它和后面的元素交换,然后前面不挪标志位,挪后面的标志位,以此类推,如果是偶数,就不交换,直接将前面的标志位挪一下。先用第一个能看出大小关系的确定出是单调增还是单调减,再进行判断,及时break。两边遍历,第一次将奇数放入奇数索引中,第二次将偶数放入偶数索引中。1,至少是其他数字的两倍大。先排序再用最后一个比较。一个一个算,按照逻辑;

2023-09-21 23:26:44 22

原创 2023.9.20

主要是找缺少的元素,如果缺少的在1-n中,则相邻的两个元素差肯定大于1,为2;另外要考虑缺少的是1和n的情况。要注意考虑后面可能连续的序列比前面的更长,也要考虑连续为一个值的情况,注意设置标志位。先计算总和,然后遍历,计算左边的和,如果二倍的它加上元素本身为总和的话就相当于找到了。result.add(),定义列表。4.寻找数组的中心下标。3.最长连续递增序列。

2023-09-21 19:19:20 16

原创 nohup命令,记录。

为了不受断网影响,可以用如下命令进行.py文件的运行:nohup python code.py >output.log 2>&1 &过程在output.log里

2023-09-20 10:06:47 43 1

原创 2023.9.19

在循环的时候有超出时间限制,可以将判断条件放在循环的判断条件里面,可以降低时间。注意求绝对值是Math.abs(num)把不是0的先挪出来,后面补0,再复制。内置函数,Math.sqrt()注意为4个倍数,分析。

2023-09-19 15:40:25 18

原创 2023.9.18 LeetCode 5道

2023.9.18

2023-09-18 19:31:24 21

原创 java第一次

System.out.println("书名\t作者\t价格\t销量\n三国\t罗贯中\t120\t1000");System.out.println("北京\t天津\t上海");System.out.println("北京\n天津\n上海");System.out.println("北京\\天津\\上海");//1.JDK=JRE+java开发工具。//2.JRE = JVM+核心类库。//编写Hello,world程序。//JDK.JRE,JVM的关系。/ \t:对齐,给一个制表位。

2023-06-03 20:13:35 45

原创 SSIM加入网络中

SSIM

2023-05-10 21:55:29 210 2

原创 解决【CUDA error: an illegal memory access was encounteredCUDA kernel errors might be asynchronously 】

3、继续减小batch_size到8,不再报错。但是速度比之前慢一些。2、将batch_size从15调整到10后没有变化,依旧报错。1、换了一张卡,并没有起效。

2023-04-28 20:26:55 1136 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除