首页 > 其他分享 >每日一结

每日一结

时间:2022-09-29 19:14:52浏览次数:41  
标签:index right 每日 len 一结 sum dp left

5. 最长回文子串

本题,需要求出给定字符串中的最长回文子串。
解题思路,既然要求最长,就设置一个len来记录最长字串,初始化为1。
采用扩散的方法,设置一个left和right,以及maxstart。
while(left >= 0 && s.charAt(left) == s.charAt(i)) {
left--;
len++;
}
while(right < n && s.charAt(right) == s.charAt(i)) {
right++;
len++;
}
while(left >= 0 && right < n && s.charAt(left) == s.charAt(right)) {
left--;
right++;
len = len + 2;
}
if(len > maxlen ) {
maxlen = len;
maxstar = left;
}
每一次循环,将len重置为1。因为发散的中心点更替了。


494. 目标和

采用回溯法。回溯函数设置一个index和当前所得到的和
public void dnn(int[] nums, int target, int index, int sum) {
if(index == nums.length) {
if(sum == target) {
count++;
}
}else{//【else注意】
dnn(nums, target, index + 1, sum + nums[index]);
dnn(nums, target, index + 1, sum - nums[index]);
}
}
本人在做的时候,没有写else导致了结果的错误。


1049. 最后一块石头的重量 II

本题最重要的是,如何发掘解题思路。
因为本题是要让,最终重量尽可能的小。所以就是让取出的重量尽可能的靠近sum / 2;
因此本问题可以看作是背包容量为⌊sum/2⌋,物品重量和价值均为stones[i]的 0-1 背包问题。
依旧设置一个二维数组,第一维表示可取的物品,第二维表示,当前需要达到的目标值。
for(int i = 0; i < n; i++) {//因为是后推前,i+1,所以i<n而不是i<=n
for(int j = 0; j <= t; j++) {
if(stones[i] > j) {//放不下 【如果采用dp[i][j] = dp[i - 1][j],那么i <= n,显然stones[i]会超】
dp[i + 1][j] = dp[i][j];
}else {
dp[i + 1][j] = dp[i][j] || dp[i][j - stones[i]];
}
}
}
最后找到,放入所有物品,能够达到的最接近sum / 2的值,用sum - i*2本题即解
for(int i = t; ; i--) {
if(dp[n][i]) {
return sum - i * 2;
}
}

标签:index,right,每日,len,一结,sum,dp,left
From: https://www.cnblogs.com/xtag/p/16742661.html

相关文章

  • C语言每日一题——第三天
    第三天完成了给朋友的礼物和自己的小想法,小明觉得这两天的学习非常成功!他决定去开发一个小游戏。在一阵开发之后……他遇到了难题——如何为生成“随机数”?尽管操作系统......
  • C语言每日一题——第二天
    第二天题目小明在完成给朋友统计生日的代码之后,想起来他好像看到过有一个数学公式是用于计算某年某月某日是星期几。当然了,他不会无聊到用这个程序计算超过700年前的星期......
  • 每日一结
    回文子串是要连续的,回文子序列可不是连续的516.最长回文子序列解决本题一个很妙的做法就是,设置一个二维数组,行为给定字符串的最后一位,列每次的起始值为行+1。这样做的......
  • 【每日一练】53—写一个完整的摄影网站页面
    ​写在前面如果你是一个热爱摄影的人,肯定也想把自己的作品呈现给更多人看,我们除了通过第三方的平台,分享你的摄影作品外,我们还可以通过自己的个人博客或者摄影网站来分享这些......
  • C语言每日一题——第一天
    第一天小明想要给他的朋友写一个生日祝福程序,在运行时,会根据输入的日期输出不同的结果。若在平时运行程序(例如9月28日):09-28:+3?-15而在朋友生日(12月13日)当天:12-13......
  • 每日一结
    174.地下城游戏本题是本人在学习动态规划遇到的第一道比较特殊的题目。因为此题是倒着推的。因为要求最低血量,如果正着从起点开始求,不能保证后无效性。也就是说,前面的工......
  • LeetCode739 每日温度
    LeetCode739每日温度classSolution:defdailyTemperatures(self,temperatures:List[int])->List[int]:ans,stack,n=[0]*len(temperatures),[......
  • 每日一结
    120.三角形最小路径和要求自顶到下的最短路径,只需要把从顶到各个位置的值都求出,最后再找出最底行的最小值即可。因为当前位置可由其正上方或者斜上方得来,所以只需要初始......
  • pta甲级1005-1009+cf每日水题
    1005:简单模拟,数组打表1#include<bits/stdc++.h>2usingnamespacestd;3#defineintlonglong4#defineIOSios_base::sync_with_stdio(0);cin.tie(0);cout.......
  • 前端-每日一题
    20220919202121222324......