当前位置: 首页 > news >正文

Leetcode3282. 到达数组末尾的最大得分

Every day a Leetcode

题目来源:3282. 到达数组末尾的最大得分

解法1:动态规划

代码:

class Solution {
public:long long findMaximumScore(vector<int>& nums) {if (nums.size() <= 1) return 0LL;int n = nums.size();vector<long long> dp(n + 1);dp[0] = 0;for (int j = 1; j <= n; j++) {for (int i = 1; i < j; i++) {dp[j] = max(dp[j], dp[i] + 1LL * (j - i) * nums[i - 1]);}}return dp[n];}
};

结果:超时

复杂度分析:

时间复杂度:O(n2),其中 n 是数组 nums 的长度。

空间复杂度:O(n),其中 n 是数组 nums 的长度。

解法2:动态规划 + 贪心

维护一个 maxIndex 表示之前 nums 元素最大值的下标,从贪心的角度思考,从maxIndex 跳到当前下标 i,增加的值最大。

代码:

/** @lc app=leetcode.cn id=3282 lang=cpp** [3282] 到达数组末尾的最大得分*/// @lc code=start
class Solution
{
public:long long findMaximumScore(vector<int> &nums){if (nums.size() <= 1)return 0LL;int n = nums.size();vector<long long> dp(n);dp[0] = 0;int maxIndex = 0;for (int i = 1; i < n; i++){dp[i] = dp[maxIndex] + 1LL * (i - maxIndex) * nums[maxIndex];if (nums[i] > nums[maxIndex])maxIndex = i;}return dp[n - 1];}
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中 n 是数组 nums 的长度。

空间复杂度:O(n),其中 n 是数组 nums 的长度。


http://www.mrgr.cn/news/27493.html

相关文章:

  • 使用tauri + naiveAdmin 构建桌面应用程序
  • web浏览器环境下使用window.open()打开PDF文件不是预览,而是下载文件?
  • Android View 调用基础 通用属性基础 方法场景说明
  • 动态内存管理(c语言)
  • Unity肢体控制(关节控制)
  • 关系型数据库和非关系型数据库详解
  • 二、Kubernetes中pod的管理及优化
  • SpringSecurity原理解析(七):权限校验流程
  • Python数据分析-Numpy快速入门
  • 【Scala入门学习】基本数据类型和变量声明
  • 6.1 溪降技术:绳结
  • 分享一些智慧农业数据集
  • VMware中安装win7和kail等虚拟机
  • 适合学生党开学买的蓝牙耳机?分享开放式耳机排行榜前十名
  • 半导体制造技术中的沉积和驱入(Deposition and drive-in)过程
  • P1540 [NOIP2010 提高组] 机器翻译
  • 深入理解 SpringMVC:现代Web开发全面指南
  • Java | Leetcode Java题解之第406题根据身高重建队列
  • Mac清理软件哪个好?一场与“垃圾”的欢乐对决!
  • 数据结构基础详解:哈希表【C语言代码实践篇】开放地址法__拉链法_哈希表的创建_增删查操作详解
  • 【WRF工具介绍】WRF Domain Wizard-确定模拟区域
  • kali——fcrackzip和rarcrack的使用
  • 解决win11 使用wsl工具,不能使用systemctl
  • 深度学习基础案例5--运用动态学习率构建CNN卷积神经网络实现的运动鞋识别(测试集的准确率84%)
  • 【UEFI基础】BIOS模块执行的优先级
  • matlab delsat = setdiff(1:69,unique(Eph(30,:))); 语句含义