力扣1005:k次取反后最大化的数组和

力扣1005:k次取反后最大化的数组和

  • 题目
  • 思路
  • 代码

题目

给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:

· 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。

重复这个过程恰好 k 次。可以多次选择同一个下标 i 。
以这种方式修改数组后,返回数组 可能的最大和 。

思路

这道题的关键点在于六个字:可以多次选择!
所以我们想要获得最大和我们就要在k还没到0前先从小到大的把负数变为正数,然后就有两种情况,k耗尽了或者是没有负数了。这时候我们再分情况讨论即可,如果k耗尽了那么最大和毋庸置疑就是当前数组的和,如果是没有负数了那么面对全部都是正数的数组我们就再需要分情况讨论了也就是当前k的值是偶数还奇数。如果k是偶数因为可以多次选择一个位置来取得相反数也就是-1的偶次幂,也就是1那么答案还是当前数组的和,如果k是奇数那就是一个位置的值要变成相反数了。那么选择哪个位置呢?当然是最小数。

代码

class Solution {
public:int largestSumAfterKNegations(vector<int>& nums, int k) {int n = nums.size();int res = 0;// 按升序进行排序sort(nums.begin(), nums.end());for (int i = 0; i < n; i++) {// 如果有负数并且k大于0说明这个负数可以变成正数if (nums[i] < 0 && k > 0) {nums[i] = -nums[i];k--;}res += nums[i];}// 再排一次,让最小的数排前面sort(nums.begin(), nums.end());if (k % 2 != 0) {// 如果k为奇数我们就要让res加上最小数的相反数// 所以res等于加上两倍的最小数,当然这个最小数不知道是正是负res += -1 * 2 * nums[0];}// 如果k为偶数那么res就不用动,因为可以多次相反// 偶数次就直接抵消了return res;}
};

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

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

相关文章

国产数据库管理工具 CloudDM 2.7.1.0 发布,OceanBase 等数据源支持复杂 SQL 脱敏数据

CloudDM 是 ClouGence 公司推出的面向团队使用的数据库管理工具&#xff0c;支持云上、云下、多云等多种环境&#xff0c;并且提供多达 23 种数据源的支持。CloudDM 还支持数据库 DevOps CI/CD 功能&#xff0c;将用户产品发布流程中数据库发布和程序发布无缝串联起来。 更新亮…

AI大模型实战:用自然语言处理技术高效处理日常琐事

引言在数字化时代&#xff0c;我们每天都会面对大量的琐碎事务&#xff1a;整理会议记录、处理名单数据、撰写学习笔记等等。这些工作不仅耗时&#xff0c;而且容易出错。幸运的是&#xff0c;随着人工智能技术的发展&#xff0c;特别是大语言模型&#xff08;LLM&#xff09;的…

【spring security】为什么要使用userdetailservice

Spring Security UserDetailsService 深度解析&#xff1a;从401到认证成功的完整实现 &#x1f4cb; 目录 问题背景Spring Security认证架构UserDetailsService的作用完整实现过程常见问题与解决方案最佳实践 &#x1f3af; 问题背景 在开发B2B采购平台时&#xff0c;我们…

机器学习中的数据处理技巧

一、Pandas处理丢失数据&#xff08;一&#xff09;判断缺失值​​isnull()函数​​&#xff1a;用于判断数据框&#xff08;DataFrame&#xff09;中各个单元格是否为空&#xff0c;可帮助我们识别出存在缺失数据的单元格位置。&#xff08;二&#xff09;处理缺失值的方法​​…

田野科技“一张皮”,“AI+虚拟仿真”推动考古教学创新发展

文运同国运相牵&#xff0c;文脉同国脉相连。考古不仅关系到我们对古代文化的认知、发掘、保护、利用&#xff0c;关系到考古学学科体系、学术体系、话语体系的建设&#xff0c;更是关系到我国考古学的国际影响力&#xff0c;对增强世界不同地区古代文明的比较研究有着十分重要…

为什么我的UI界面会突然卡顿,失去响应

有操作都应是“非阻塞”的&#xff0c;以确保能随时响应用户的输入。导致主线程阻塞的常见“元凶”主要涵盖五个方面&#xff1a;主线程被“长时间”的同步计算所“阻塞”、单次渲染的界面节点过多或过于复杂、内存中存在“未释放”的巨大对象或“内存泄漏”、响应了“高频率”…

大规模IP轮换对网站的影响(服务器压力、风控)

在当下的互联网环境中&#xff0c;代理IP轮换已经成为爬虫、SEO、数据采集等行业的常见手段。尤其是大规模数据抓取时&#xff0c;通过代理池实现IP轮换&#xff0c;可以有效避免因单一IP请求过于频繁而被目标网站封禁。 然而&#xff0c;大规模IP轮换虽然对采集方有利&#xf…

4. STM32 vscode 环境, 官方插件

文章目录1. 新建配置2. 安装插件3. 新建工程1. 新建配置 新建vscode 配置&#xff0c; 因为stm32插件比较多&#xff0c; 避免和其他插件冲突。 激活环境&#xff1a; 这里可快速切换&#xff1a; 2. 安装插件 可选择安装最新预览版&#xff1a; 等待依赖安装完成后重启…

【动态规划:路径问题】最小路径和 地下城游戏

最小路径和&#xff08;medium&#xff09; 64. 最小路径和 ​ 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 ​ **说明&#xff1a;**每次只能向下或者向右移动一步。 示例 1&#xff…

SQL详细语法教程(七)核心优化

以下对 SQL 优化 涉及的关键场景&#xff08;含 update 行锁优化&#xff09;进行极致详细的拆解&#xff0c;从底层原理、执行流程到实战代码、避坑指南全维度覆盖&#xff0c;搭配表格对比让逻辑更清晰&#xff1a;一、SQL 优化 - COUNT 优化1. 底层原理&#xff1a;COUNT() …

Tomcat 的核心脚本catalina.sh 和 startup.sh的关系

catalina.sh 和 startup.sh 都是 Tomcat 的核心脚本&#xff0c;但它们的角色和使用场景有所不同。以下是它们的主要区别和适用场景&#xff1a;1. 功能区别脚本主要用途底层调用关系startup.sh一个快捷入口脚本&#xff0c;用于快速启动 Tomcat&#xff08;后台模式&#xff0…

飞算JavaAI:简易贪吃蛇小游戏

目录先确定核心功能技术选型核心功能实现过程1. 数据模型设计2. 游戏界面和绘制逻辑3. 游戏主框架和事件处理飞算JavaAI在开发中的应用体验可以进一步优化的地方作为Java课程的小作业&#xff0c;不想做太复杂的管理系统&#xff0c;就选了贪吃蛇这个经典小游戏。全程用Swing做…

如何保障内部网络安全前提下,实现与外部互联网之间的文件传输?

在数字化时代&#xff0c;企业网络环境日益复杂&#xff0c;普遍采用“内外网隔离”的安全架构&#xff1a;内部办公网承载业务系统与数据&#xff0c;外部互联网则用于对外沟通与信息获取。这种隔离有效抵御了外部攻击&#xff0c;但也带来了“信息孤岛”问题——如何在保障内…

计算机视觉 图片处理 在骨架化过程中,每次迭代都会从图像的边缘移除一层像素,直到只剩下单像素宽度的骨架

你说得对&#xff0c;if cv2.countNonZero(binary) 0: break 这个条件确实表示图像中已经没有非零像素&#xff0c;即图像完全变为空白。这并不是骨架化完成的标志&#xff0c;而是表示图像已经被腐蚀到没有任何内容了。 在骨架化过程中&#xff0c;我们需要一个更合适的停止条…

rt-thread audio框架移植stm32 adc+dac,用wavplayer录音和播放

D1 参考 rt-thread官方sdk中&#xff0c;正点原子stm32f429-atk-appollo的board中有audio文件夹&#xff0c;包括了mic/play的程序&#xff0c;wm8978的库文件因为我们基于stm32h750内置adcdac设计&#xff0c;所以不需要wm8978.c/h。只需要移植drv_sound.c和drv_mic.c D2 工程…

AI重塑软件测试:质量保障的下一站

软件开发的世界变化飞快&#xff0c;系统越来越复杂&#xff0c;用户的胃口越来越大&#xff0c;产品上线的压力也越来越大。作为测试工程师&#xff0c;你是不是常常觉得传统测试已经跟不上节奏了&#xff1f;手工测试累死人&#xff0c;自动化脚本维护到崩溃&#xff0c;测试…

【前端基础知识系列六】React 项目基本框架及常见文件夹作用总结(图文版)

在 React 开发中&#xff0c;一个清晰合理的项目结构不仅能提高开发效率&#xff0c;还能让代码更易于维护和扩展。尤其是在团队协作中&#xff0c;统一的项目结构规范至关重要。本文将通过图文结合的方式&#xff0c;详细介绍 React 项目的基本框架以及常见文件夹的定义与作用…

0815 UDP通信协议TCP并发服务器

Part 1.思维导图一.UDP通信协议1.原理服务器端&#xff1a;1.用socket函数创建一个套接字文件2.创建服务器端地址结构体并赋值3.用ford函数将套接字文件与地址结构体绑定4.创建接收客户端地址结构体5.利用sendto和recvfrom函数传输和接收信息客户端&#xff1a;1.用socket函数创…

一个基于纯前端技术实现的五子棋游戏,无需后端服务,直接在浏览器中运行。

一 功能特性1.1 核心游戏功能- **标准五子棋规则**&#xff1a;1515棋盘&#xff0c;黑子(玩家)先手 - **AI对战模式**&#xff1a;白子AI具有中等难度&#xff0c;会进行智能进攻和防守 - **胜负判定**&#xff1a;支持横向、纵向、斜向五子连线获胜 - **平局检测**&#xff1…

HBuilderX升级,Vue2 scss 预编译器默认已由 node-sass 更换为 dart-sass

目录 一、问题描述 二、问题原因 三、问题解析及解决方案 一、问题描述 最近开发新项目&#xff0c;升级了HBuilderX版本到4.75&#xff0c;最近要在之前的项目添加功能的时候发现报错&#xff0c;错误如下&#xff1a;Vue2 scss 预编译器默认已由 node-sass 更换为 dart-sa…