首页 > 其他分享 >(NICE!!!)LeetCode 3040. 相同分数的最大操作数目 II(深度优先搜索dfs+状态记忆化)

(NICE!!!)LeetCode 3040. 相同分数的最大操作数目 II(深度优先搜索dfs+状态记忆化)

时间:2024-06-08 14:59:15浏览次数:15  
标签:target nums int dfs II vector 3040 mx

3040. 相同分数的最大操作数目 II

在这里插入图片描述
在这里插入图片描述

思路:记忆化搜索。一共最多三种target,我们三次记忆化搜索即可。细节看注释

class Solution {
public:
    int n;
    vector<vector<int>> v;
    //对区间l~r进行操作,返回符合target的最大操作次数
    int dfs(int l,int r,int target,vector<int>& nums){
        if(l>=r) return 0;
        if(v[l][r]!=-1) return v[l][r];
        int mx=0;
        if(nums[l]+nums[r]==target) mx=max(mx,dfs(l+1,r-1,target,nums)+1);
        if(nums[l]+nums[l+1]==target) mx=max(mx,dfs(l+2,r,target,nums)+1);
        if(nums[r]+nums[r-1]==target) mx=max(mx,dfs(l,r-2,target,nums)+1);
        return v[l][r]=mx;
    }
    int maxOperations(vector<int>& nums) {
        n=nums.size();
        v=vector<vector<int>>(n,vector<int>(n,-1));
        int mx=0;
        mx=max(mx,dfs(2,n-1,nums[0]+nums[1],nums)+1);
        v=vector<vector<int>>(n,vector<int>(n,-1));
        mx=max(mx,dfs(0,n-3,nums[n-1]+nums[n-2],nums)+1);
        v=vector<vector<int>>(n,vector<int>(n,-1));
        mx=max(mx,dfs(1,n-2,nums[0]+nums[n-1],nums)+1);
        return mx;
    }
};

标签:target,nums,int,dfs,II,vector,3040,mx
From: https://blog.csdn.net/weixin_46028214/article/details/139546405

相关文章

  • C语言学习日志4-关键字iii
    1.6,if、else组合1.6.1,bool变量与“零值”进行比较boolbTestFlag=FALSE;C),if(bTestFlag);if(!bTestFlag);1.6.2,float变量与“零值”进行比较floatfTestVal=0.0;B),if((fTestVal>=-EPSINON)&&(fTestVal<=EPSINON));//EPSINON为定义好的精度。1.6.3,指......
  • C语言学习日志3-关键字ii
    1.4,signed、unsigned关键字编译器缺省默认情况下数据为signed类型的。举例:上面的解释很容易理解,下面就考虑一下这个问题:include<stdio.h>include<string.h>intmain(){chara[1000];inti;for(i=0;i<1000;i++){a[i]=-1-i;//printf("a[%d]=0x%x\n",......
  • 代码随想录第2天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,数组总结
    题目:977.有序数组的平方思路:first.for循环,平方,然后sort排序,提交通过啊哈~|但时间复杂度大O(n+nlogn),->O(nlogn)的时间复杂度,题目进阶要求时间复杂度为O(n)second.双指针。题目为有序数组,包含负数,则平方后,最大值在数组的两头,则使用双指针进行,两个比较大小,大的存入新......
  • 只出现一次的数字 II
    题目描述给你一个整数数组nums,除某个元素仅出现一次外,其余每个元素都恰出现三次。请你找出并返回那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。示例1:输入:nums=[2,2,3,2]输出:3示例2:输入:nums=[0,1,0,1,0,......
  • 力扣:1103. 分糖果 II
    1103.分糖果II排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n=num_people 个小朋友。给第一个小朋友1颗糖果,第二个小朋友2颗,依此类推,直到给最后一个小朋友 n 颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n +1 颗糖果,第二个小朋友......
  • P1182 数列分段 Section II
    数列分段SectionII题目描述对于给定的一个长度为$N$的正整数数列$A_{1\simN}$,现要将其分成$M$($M\leqN$)段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列$4\2\4\5\1$要分成$3$段。将其如下分段:$$[4\2][4\5][1]$$第一段和为$6$,第$2$段......
  • Yii2 框架中,通过 yii\db\Command 对象来执行原生 SQL 语句
    在Yii2中,你可以通过yii\db\Command对象来执行原生SQL语句。这包括查询操作(如SELECT)和数据操作(如INSERT、UPDATE、DELETE)。以下是一些常见的例子,展示如何在Yii2中执行SQL语句。执行查询语句执行SELECT查询并获取结果你可以使用queryAll()、queryOne()、queryColu......
  • 访问托管在运行 IIS 的服务器上的网站时出现 HTTP 错误 405.0
    问题:客户端请求部署在IIS中的APS.NETCOREAPI时,get请求正常,但delete和put请求报405错误解决方法:在控制面版本-》程序功能-》启用关闭Windows功能中的,IIs-》常见Http->WebDAV发布(删除),后恢复正常。即当前症状:3本文内容症状原因1原因2原因3显示另外3个本文可帮......
  • 代码随想录算法训练营第29天 | 491.递增子序列 、46.全排列 、47.全排列 II
    491.递增子序列本题和大家刚做过的90.子集II非常像,但又很不一样,很容易掉坑里。https://programmercarl.com/0491.递增子序列.html视频讲解:https://www.bilibili.com/video/BV1EG4y1h78v关键点还要在于本层使用过的数字不能再使用/***@param{number[]}nums*@return......
  • [email protected]: Permission denied (publickey)
    输入ssh-keygen-trsa-C"[email protected]"   [email protected]的邮箱 一直回车,直到看到  然后到这个路径下打开文件  将里面的内容复制到git帐号的ssh中 ......