首页 > 其他分享 >2023.6.27 删除一次得到子数组最大和

2023.6.27 删除一次得到子数组最大和

时间:2023-06-29 16:45:04浏览次数:40  
标签:f0 f1 arr 27 mut max 2023.6 数组 res

image

考虑动态规划:

  • 状态设计:f[i][2],其中f[i][0]表示以第i个数为结尾,并且没删除过元素的子数组最大和,f[i][1]表示以第i个数为结尾,删除过一个元素的子数组最大和。
  • 状态转移:f[i][0] = max(f[i - 1][0], 0) + arr[i]f[i][1] = max(f[i - 1][1] + arr[i], f[i - 1][0])

可以发现,每个状态只和上一个状态有关系,所有不用存储下所有状态,只需要存储上一个状态即可。

use std::cmp::max;
impl Solution {
    pub fn maximum_sum(arr: Vec<i32>) -> i32 {
        let n = arr.len();

        let (mut f0, mut f1, mut res) = (arr[0], 0, arr[0]);
        arr.iter().skip(1).take(n - 1).for_each({ |x| {
            f1 = max(f0, f1 + x);
            f0 = max(f0, 0) + x;
            res = max(res, max(f0, f1));
        }});
        res
    }
}

标签:f0,f1,arr,27,mut,max,2023.6,数组,res
From: https://www.cnblogs.com/st0rmKR/p/17514597.html

相关文章

  • 代码随想录算法训练营第二十天| 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索
    669.修剪二叉搜索树思路递归法: 需要思考清楚,如果当前节点<low,那么就返回递归它的右节点,而不是自己取判断,找出来一个合适的节点,这样的话会越想越乱代码:1TreeNode*trimBST_cursor(TreeNode*root,intlow,inthigh){2if(!root)returnnullptr;34if......
  • 2023-06-27
    AndroidStudio使用新建项目最新版本选择EmptyActivity不能选择语言解决方案:选择新建EmptyViewsActivity主要文件界面设计文件名一般是activity_main.xml布局预览界面和源代码界面的切换:点击右上方code切换到代码编辑界面,点击右上方design可以切换到预览界面,并且......
  • 2023.6.29 重构 2 行二进制矩阵
    考虑贪心策略。每一列,把1优先放在lower和upper两行中较大的那一行上。implSolution{pubfnreconstruct_matrix(upper:i32,lower:i32,colsum:Vec<i32>)->Vec<Vec<i32>>{letn=colsum.len();let(mutupper,mutlower)=(upper,l......
  • vue列表页返回数组错误Invalid prop: type check failed for prop "data". Expected A
    一个vue列表页接收后端数组时是这样写的:this.list=response.data返回如下错误:Invalidprop:typecheckfailedforprop"data".ExpectedArray,gotObject意思是希望返回一个数组但实际得到一个对象Object,网上大多是初始化userList=[]或userList=null解决的,但......
  • 【剑指Offer】27、字符串的排列
    【剑指Offer】27、字符串的排列题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。解......
  • 1、数组
    1、数组是存放在连续内存空间上的相同类型数据的集合;2、数组可以方便的通过下标索引的方式获取到下标下对应的数据;3、数组下标都是从0开始的;4、数组内存空间的地址是连续的;5、因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址......
  • AtCoder Beginner Contest 227 H Eat Them All
    洛谷传送门AtCoder传送门好奇特的题。考虑显式建图,那么这是一个\(9\)个结点,\(12\)条边的图,需要找到一条回路使得第\(i\)个点被经过\(a_i\)次。首先会有一个基本思路:先求出每条边经过的次数,然后每条边复制这么多次即可直接构造欧拉回路。其中每条边经过次数的限制就是,......
  • js promise对象数组,使用reduce序列化执行
    自己使用mdn官方例子测试了一下,发现还有一些小问题,调试了一下OK了。consttimeOut=function(ms){ returnnewPromise(function(resolve){ returnsetTimeout(resolve,ms); })}varp1=function(){ returnnewPromise(function(resolve){ console.log(newDate()+'......
  • 二维数组的学习
    二维数组的拷贝这里介绍两种拷贝的方式:1.一种是通过指针的方式进行拷贝,另外一种是通过一维数组的方式进行拷贝。2.copy_arr函数实现的是指针方式的拷贝,copy_arr1实现的是一维数组方式的拷贝。两种拷贝的运行结果一样```////2023/6/28.//#include<stdio.h>#defineROW......
  • 2023.6.28 - vue项目打包内存堆栈溢出JS stacktrace
    vue项目打包时报错,JSstacktrace:ReachedheaplimitAllocationfailed-JavaScriptheapoutofmemory这是因为node打包时是有内存空间限制的,node能分配多少空间,默认是根据电脑内存占比来算的。在内存比较小的电脑里,默认分配给node的内存可能不足以支撑起项目运行或者打包......