首页 > 其他分享 >leetcode3351 好子序列的元素之和

leetcode3351 好子序列的元素之和

时间:2024-12-07 19:59:20浏览次数:6  
标签:好子 拼到 nums 元素 leetcode3351 ans 序列

给定数组num[n],如果一个子序列中任意两个相邻元素的绝对差恰好为1,则称它为好子序列,返回nums中所有好子序列的元素之和,结果对1E9+7取模。注意,长度为1的子序列算好子序列。
1<=n<=1E5; 0<=nums[i]<=1E5

分析:设f[x]表示以x结尾的所有子序列元素之和,g[x]表示以x结尾的子序列个数,从左到右逐个元素u分析,有3种情况:
(1)u自己构成一个新的子序列:f[u]+=u,g[u]+=1;
(2)u拼到u-1后面:f[u]+=g[u-1]*u+f[u-1],g[u]+=g[u-1];
(3)u拼到u+1后面:f[u]+=g[u+1]*u+f[u+1],g[u]+=g[u+1];

// mint模板...
class Solution {
public:
    int sumOfGoodSubsequences(vector<int>& nums) {
        std::map<int,mint> f, g;
        for (auto u : nums) {
            f[u] += u;
            g[u] += 1;
            
            f[u] += f[u - 1] + u * g[u - 1];
            g[u] += g[u - 1];
            
            f[u] += f[u + 1] + u * g[u + 1];
            g[u] += g[u + 1];
        }
        mint ans = 0;
        for (auto [k,v] : f) {
            ans += v;
        }
        return ans.val();
    }
};

标签:好子,拼到,nums,元素,leetcode3351,ans,序列
From: https://www.cnblogs.com/chenfy27/p/18592602

相关文章

  • 【特殊子序列 DP】【hard】力扣446. 等差数列划分 II - 子序列
    给你一个整数数组nums,返回nums中所有等差子序列的数目。如果一个序列中至少有三个元素,并且任意两个相邻元素之差相同,则称该序列为等差序列。例如,[1,3,5,7,9]、[7,7,7,7]和[3,-1,-5,-9]都是等差序列。再例如,[1,1,2,5,7]不是等差序列。数组中的......
  • Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
    随着生成式AI(genAI)模型在应用范围和模型规模方面的持续扩展,其训练和部署所需的计算资源及相关成本也呈现显著增长趋势,模型优化对于提升运行时性能和降低运营成本变得尤为关键。作为现代genAI系统核心组件的Transformer架构及其注意力机制,由于其计算密集型的特性,成为优化的重......
  • 序列化方法
    序列化(Serialization)是将对象转换为可存储或传输的格式的过程。对于Java中的JSON序列化,通常是将Java对象转换成JSON字符串,以便传输到网络中或保存到文件中。反序列化则是将JSON字符串转换回Java对象的过程。在Jackson中,序列化的核心任务是将Java对象转换为JS......
  • 洛谷题单指南-线段树-P1637 三元上升子序列
    原题链接:https://www.luogu.com.cn/problem/P1637题意解读:统计序列a[1]~a[n]中三元上升子序列的个数,三元上升子序列是指对于1<=i<j<k<=n有a[i]<a[j]<a[k],(a[i],a[j],a[k])成为一组上升子序列。解题思路:1、先思考一下暴力,通过三重循环枚举i,j,k找到所有i<j<k时符合a[i]<a[j]<a[k]......
  • P4728 [HNOI2009] 双递增序列
    P4728[HNOI2009]双递增序列题意简述:给我们一个序列问我们是否可以将其划分为两个单调递增的子序列Solution:无比神奇的状态设计:记\(f[i][j]\)表示考虑到\(i\)且将\(a_i\)放在\(U\),\(U\)的长度为\(j\)时,\(V\)的末尾的最小值那么我们就可以得到转移:当\(a_i<......
  • 【人工智能】基于Python实现时间序列预测:LSTM与Prophet的全面对比
    《PythonOpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门!本文详细探讨了长短期记忆网络(LSTM)和Meta的开源Prophet模型在时间序列预测中的应用场景和性能对比。我们从理论基础、实现方法和实际效果三个维度进行分析,使用真实数据集(例如股票价格或电力消耗数据)对两种......
  • C++算法练习-day62——491.非递减子序列
    题目来源:.-力扣(LeetCode)题目思路分析这个问题要求找出数组 nums 中的所有非严格递增子序列,其中每个子序列至少包含两个元素。非严格递增子序列意味着子序列中的元素可以相等,但不允许递减。为了解决这个问题,可以使用回溯法。回溯法是一种通过探索所有可能的候选解来找出......
  • 【Python项目】基于时间序列分析的降雨量预测系统
    【Python项目】基于时间序列分析的降雨量预测系统技术简介:采用Python技术、B/S结构、MYSQL数据库等实现。系统简介:主要功能包括:(1)登录功能:用户如果想要使用系统,就必须登录系统,登录的时候需要输入用户名和密码。(2)用户管理:包括用户列表、用户增加与删除。(3)降雨量预测功能:输入要......
  • 代码随想录算法训练营第十六天(LeetCode513.找树左下角的值;LeetCode112.路径总和;LeetCo
    LeetCode513.找树左下角的值题目连接:找树左下角的值题目连接代码递归法/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.......
  • 序列化(Serialization)&protobuf
    References:SerializationWhatisProtobuf?ProtocolBuffers(Protobuf)isalanguage-agnostic,platform-neutral,andextensiblemechanismforserializingstructureddata.ItwasdevelopedbyGoogleandisoftenusedforcommunicationbetweenservices......