【康复学习--LeetCode每日一题】2786. 访问数组中的位置使分数最大

题目描述:

给你一个下标从 0 开始的整数数组 nums 和一个正整数 x 。
你一开始 在数组的位置 0 处,你可以按照下述规则访问数组中的其他位置:
如果你当前在位置 i ,那么你可以移动到满足 i < j 的 任意 位置 j 。
对于你访问的位置 i ,你可以获得分数 nums[i] 。
如果你从位置 i 移动到位置 j 且 nums[i] 和 nums[j] 的 奇偶性 不同,那么你将失去分数 x 。
请你返回你能得到的 最大 得分之和。
注意 ,你一开始的分数为 nums[0] 。

示例 1:

输入: nums = [2,3,6,1,9,2], x = 5
输出: 13
解释: 我们可以按顺序访问数组中的位置:0 -> 2 -> 3 -> 4 。
对应位置的值为 2 ,6 ,1 和 9 。因为 6 和 1 的奇偶性不同,所以下标从 2 -> 3 让你失去 x = 5 分。
总得分为:2 + 6 + 1 + 9 - 5 = 13 。

示例 2:

输入: nums = [2,4,6,8], x = 3
输出: 20
解释: 数组中的所有元素奇偶性都一样,所以我们可以将每个元素都访问一次,而且不会失去任何分数。
总得分为:2 + 4 + 6 + 8 = 20 。

提示:

2 <= nums.length <= 105
1 <= nums[i], x <= 106

Leetcode题目地址:

题目地址

解题思路:

简单dp,当前操作的最大值取决于上一操作的nums[t]是奇数还是偶数,所以我们可以维护该操作前,偶数的最大值和奇数的最大值。于是根据题目我们能得到如下公式:
res = Math.max(res, Math.max(dp[ nums[i]%2] + nums[i], dp[1 - nums[i]%2] - x + nums[i]))
此时记得更新dp数组的值,要永远维护当前操作前的偶数的最大值和奇数的最大值:
dp[nums[i]%2] = Math.max(dp[nums[i]%2] + nums[i], dp[1 - nums[i]%2] - x + nums[i])

代码:

class Solution {public long maxScore(int[] nums, int x) {long res = nums[0];long[] dp = {Integer.MIN_VALUE, Integer.MIN_VALUE};dp[nums[0]%2] = nums[0];for(int i = 1; i < nums.length; i++){int tmp = nums[i]%2;res = Math.max(res, Math.max(dp[tmp] + nums[i], dp[1 - tmp] - x + nums[i]));dp[tmp] = Math.max(dp[tmp] + nums[i], dp[1 - tmp] - x + nums[i]);}return res;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/27069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux多线程编程中的同步与互斥

文章目录 一、线程同步与互斥1、理解线程同步2、互斥的概念3、小结 二、互斥锁&#xff08;Mutex&#xff09;1、互斥锁的定义和作用2、pthread库中的互斥锁3、互斥锁的实现原理4、示例代码演示互斥锁的基本用法 三、条件变量&#xff08;Condition Variable&#xff09;1、条件…

IDEA 配置方法模板无法获取到参数值和返回值(methodParameters()、methodReturnType()获取不到值)

问题现象&#xff1a; 我在 review 同事代码时候&#xff0c;发现方法上有注释&#xff0c;但是注释上又没有方法参数和返回值&#xff0c;这不是IDEA 配置了方法模板就可以自动生成的嘛&#xff0c;我出于好奇去问了下该同事是怎么回事&#xff0c;该同事有点不好意思的说我配…

Nginx正向代理配置示例与说明

Nginx的正向代理配置示例和说明如下&#xff1a; 配置示例 配置文件&#xff08;nginx.conf&#xff09; server {resolver 114.114.114.114; # 指定DNS服务器IP地址resolver_timeout 5s; # 设置DNS服务器域名解析超时时间listen 80; # 监听HTTP的80端口…

【JAVA】Java中Spring Boot如何设置全局的BusinessException

文章目录 前言一、函数解释二、代码实现三、总结 前言 在Java应用开发中&#xff0c;我们常常需要读取配置文件。Spring Boot提供了一种方便的方式来读取配置。在本文中&#xff0c;我们将探讨如何在Spring Boot中使用Value和ConfigurationProperties注解来读取配置。 一、函数…

昂辉科技EasySAR-BootLoader上位机产品

近年来&#xff0c;硬件标准化、同质化和软件差异化、复杂化成为了汽车产品研发的重要趋势。与此同时&#xff0c;大量的智能化功能和快速上车的节奏&#xff0c;对软件开发提出了更高的要求。在软硬件解耦的大背景下&#xff0c;建立统一的软件体系和开发工具以紧跟硬件更新迭…

Linux怎么编辑所有行行尾内容

Linux怎么编辑所有行行尾内容 1. sed2. Visual Block 模式 ctrlv 1. sed sed 是一个流编辑器&#xff0c;它可以逐行处理文本文件。要在所有行的行尾添加内容&#xff0c;可以使用 sed 的替换功能。 想在每一行的行尾添加一些内容&#xff0c;例如添加字符串 "END"。…

【NOI-题解】1389 - 数据分析1750 - 有0的数1457 - 子数整除1121 - “倒”数1962. 数值计算

文章目录 一、前言二、问题问题&#xff1a;1389 - 数据分析问题&#xff1a;1750 - 有0的数问题&#xff1a;1457 - 子数整除问题&#xff1a;1121 - “倒”数问题&#xff1a;1962. 数值计算 三、感谢 一、前言 本章节主要对循环中带余除法部分题目进行讲解&#xff0c;包括…

python数据分析-北京市二手住宅市场价格波动分析

一、研究背景&#xff1a; 北京市作为中国的首都和经济中心&#xff0c;房地产市场一直备受关注。二手住宅市场是房地产市场的重要组成部分&#xff0c;其价格波动不仅影响着购房者和卖房者的利益&#xff0c;也对整个经济社会的稳定和发展产生重要影响。因此&#xff0c;对北…

idea 配置文件中文乱码

再进行springboot项目开发时发现新建的配置文件中文注释乱码&#xff0c;如下: 处理办法: 1、打开idea&#xff0c;在 File 中找到 Settings,如下图 2、搜索 encodings 找到 File Encodings&#xff0c;如下图 3、将上图中圈上的地方全部改为 UTF-8 编码最后点击 Apply 应用即…

独孤思维:副业,可以日入上千

01 为什么做副业&#xff1f; 你看看自己的主业&#xff0c;平均下来&#xff0c;一天收入是不是200-500。 其实这是普遍打工人的正常水平&#xff0c;有的甚至还没有。 但是副业却不一样。 副业&#xff0c;可以日入上千&#xff0c;甚至上万。 虽然不能持续稳定&#x…

大数据同步方案怎么选,才能提高企业的业务效率?

大数据同步通常指的是在多个数据源或存储系统之间同步数据的过程&#xff0c;可以确保数据的一致性&#xff0c;提高数据的可用性和可靠性&#xff0c;同时支持数据分析和决策制定。 大数据同步的步骤通常包括&#xff1a; 数据识别&#xff1a;确定需要同步的数据类型和范围&…

爬虫-模拟登陆博客

import requests from bs4 import BeautifulSoupheaders {user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36 } # 登录参数 login_data {log: codetime,pwd: shanbay520,wp-submit: …

feedparser - Python 解析Atom和RSSfeed

文章目录 一、关于 feedparser二、安装三、关于文档及构建四、测试五、常见RSS元素访问常见 Channel 元素访问常用项目元素 六、常见Atom元素访问常用feed元素访问公共入口元素 七、获取Atom元素的详细信息Feed元素的详细信息 八、测试元素是否存在九、其他功能 & 文档高级…

计算机视觉与深度学习实战,Python为工具,知识库的手写体数字识别

随着人工智能技术的飞速发展,计算机视觉与深度学习已成为当今科技领域的热点。手写体数字识别作为计算机视觉的一个重要应用,不仅在邮政编码、银行支票处理等方面有广泛应用,也是机器学习和深度学习入门者的经典实战案例。本文将通过Python这一强大工具,介绍如何使用深度学…

neutron

如何维护open stack的逻辑状态 网络资源的抽象和表示&#xff1a; Neutron将网络、子网、路由器、端口等网络资源抽象为相应的数据模型&#xff0c;并在数据库中持久化存储。每个资源都有一个唯一的标识符&#xff08;ID&#xff09;&#xff0c;并通过RESTful API进行管理和操…

eBay测评,自养号应该如何做?

测评自养号就是自己搭建国外的服务器和IP环境&#xff0c;实现自己注册eBay的买家账号&#xff0c;通过电脑端环境一台电脑就可以无限养号&#xff0c;一次可以开十几个窗口同时浏览下单&#xff0c;每个窗口都是独立的环境&#xff0c;一账号一环境一IP一卡 买家账号掌握在卖…

酷开科技丨酷开系统智慧中心,解锁AI智能家居生活的无限可能

想象一下&#xff0c;未来的AI电视不再是冷冰冰的机器&#xff0c;而是家庭的智能伙伴。它学习你的喜好&#xff0c;预测你的需求&#xff0c;用声音和触感与你交流。它控制家中的灯光、温度&#xff0c;甚至帮你订购生活用品。 在探索智能家居的未来发展时&#xff0c;酷开系…

redis的分布式session和本地的session有啥区别

在web应用开发中&#xff0c;Session用于在多个请求之间存储用户数据。传统上&#xff0c;Session存储在服务器的内存中&#xff0c;即本地Session。然而&#xff0c;随着应用规模和复杂度的增加&#xff0c;特别是在分布式环境中&#xff0c;本地Session会遇到一些问题。这时&…

Oracle数据库之 函数(十七)

在Oracle数据库中&#xff0c;函数&#xff08;Functions&#xff09;是用于执行特定计算或操作并返回值的命名PL/SQL块。以下是关于Oracle函数的基本操作&#xff0c;包括创建、调用和删除函数的详细步骤和说明。 1. 创建Oracle函数 创建Oracle函数需要使用CREATE OR REPLAC…

Day01 数据结构概述

目录 一、数据结构概述 1、基本概念 2、数据结构 3、逻辑关系&#xff08;线性结构&非线性结构&#xff09; 4、物理结构&#xff08;存储结构&#xff09; 5、算法 6、算法特征 二、时空复杂度 1、时间复杂度 2、空间复杂度 3、结构类型 一、数据结构概述 1、…