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

贪心算法(5)(java)k次取反后最大化的数组和

        题目:给定一个整数数组 `nums` 和一个整数 `k`,你可以进行最多 `k` 次取反操作。每次操作可以选择数组中的一个元素并将其取反(即 `x` 变为 `-x`)。最终返回经过 `k` 次取反操作后,数组可能的最大总和。

解法:分情况讨论。

设:整个数组中负数的个数是m个

1.m>k: 把前k小负数转化成正数

2.m==k:把所有负数全部转化成正数

3.m<k: 1..先把所有负数变成正数

            2.k-m的奇偶性1...偶数:直接忽略

                                    2...奇数:挑选当前数组中最小的数,变成负数

import java.util.Arrays;public class Solution {public int largestSumAfterKNegations(int[]nums,int k){int m=0,minElem=Integer.MAX_VALUE,n=nums.length;//统计负数个数,记录绝对值最小的元素for(int x:nums){if(x<0)m++;//负数计数minElem=Math.min(minElem,Math.abs(x));}//分类讨论int ret=0;if(m>k){   //情况一:负数个数多于k次反转Arrays.sort(nums);//排序数组for(int i=0;i<k;i++){//翻转前k个负数ret -= nums[i];//剩余元素直接累加}for(int i=k;i<n;i++){ret += nums[i];}}else{//负数个数小于等于k次翻转//把负数全部变为正数for(int x:nums)ret+=Math.abs(x);if((k-m)%2!=0){//剩余奇数次需调整最小值ret-=minElem*2;//减去两倍·最小值}}return ret;}public static void main(String[] args) {Solution solution=new Solution();int [] nums={2,-3,-1,5,-4};int result= solution.largestSumAfterKNegations(nums,2);System.out.println(result);}
}

相关文章:

贪心算法(5)(java)k次取反后最大化的数组和

题目&#xff1a;给定一个整数数组 nums 和一个整数 k&#xff0c;你可以进行最多 k 次取反操作。每次操作可以选择数组中的一个元素并将其取反&#xff08;即 x 变为 -x&#xff09;。最终返回经过 k 次取反操作后&#xff0c;数组可能的最大总和。 解法&#xff1a;分情况讨…...

【Spring】@PostConstruct详解

在 Java 开发中&#xff0c;尤其是在基于 Spring 框架的项目里&#xff0c;我们常常会遇到需要在对象创建并完成依赖注入后&#xff0c;执行一些初始化操作的场景。PostConstruct注解正是为解决此类问题而诞生的&#xff0c;它为我们提供了一种便捷且优雅的方式来处理对象的初始…...

OEM SQL Details and Session Details 5s 或者parallel 才会在sql monitor显示

从企业管理器 13.4 版本更新 10 (RU10) 开始&#xff0c;ASH Analytics 的 SQL 详细信息和会话详细信息深入屏幕已更新为使用 Oracle JET UI。 在 Ash Analytics 中&#xff0c;单击左下角区域中“热门 SQL”中的 SQL ID 即可深入了解 SQL 详细信息。 单击右下角“热门会话”区…...

JSAR 基础 1.2.1 基础概念_空间小程序

JSAR 基础 1.2.1 基础概念_空间小程序 空间空间自由度可嵌入空间空间小程序 最新的技术进展表明&#xff0c;官网之前的文档准备废除了&#xff0c;基于xsml的开发将退出历史舞台&#xff0c;three.js和普通web结合的技术将成为主导。所以后续学习请移步three.js学习路径&#…...

Spring Security的作用

一、概述 Spring Security是一个框架&#xff0c;提供认证&#xff08;authentication&#xff09;、授权&#xff08;authorization&#xff09;和保护&#xff0c;以抵御常见攻击。对 常见漏洞 的保护提供了全面的支持&#xff0c;它对保护命令式和响应式应用程序有一流的支…...

数据结构与算法效率分析:时间复杂度与空间复杂度详解(C语言)

1. 算法效率 1.1 如何衡量一个算法的好坏&#xff1f; 在计算机程序设计中&#xff0c;衡量算法优劣的核心标准是效率。但效率不仅指运行速度&#xff0c;还需要综合以下因素&#xff1a; 时间因素&#xff1a;算法执行所需时间 空间因素&#xff1a;算法运行占用的内存空间…...

数据类设计_图片类设计之4_规则类图形混合算法(前端架构)

前言 学的东西多了,要想办法用出来.C和C是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容 引入 接续上一篇,讨论图片类型设计出来后在场景中如何表达,以及图片的混合算法.前面的内容属于铺垫和基础,这篇内容和实际联系起来了. 背景图和前景图 这里笔者想先…...

从零使用docker并安装部署mysql8.3.0容器

在开始使用docker到完成mysql的安装部署&#xff0c;中间有很多的坑等着 安装docker并配置 sudo yum install docker-ce 启动docker并设置开机启动项 sudo systemctl start docker sudo systemctl enable docker查看docker是否启动 sudo systemctl status docker 或者直接…...

【从零开始学习计算机科学】编译原理(二)高级编程语言及其语法描述

【从零开始学习计算机科学】编译原理(二)高级编程语言及其语法描述 高级语言及其语法描述程序语言的定义形式语言与自动机文法的类型语言的类型自动机词法规则语法规则四则运算的语法描述布尔表达式语法描述赋值、分支、循环、程序块语句语法描述数组说明语句过程调用语句语义…...

STM32全系大阅兵(2)

接前一篇文章:STM32全系大阅兵(1) 本文内容参考: STM32家族系列的区别_stm32各个系列区别-CSDN博客 STM32--STM32 微控制器详解-CSDN博客...

cpu 多级缓存L1、L2、L3 与主存关系

现代 CPU 的多级缓存&#xff08;L1、L2、L3&#xff09;和主存&#xff08;DRAM&#xff09;构成了一个层次化的内存系统&#xff0c;旨在通过减少内存访问延迟和提高数据访问速度来优化计算性能。以下是对多级缓存和主存的详细解析&#xff1a; 1. 缓存层次结构 现代 CPU 通…...

MyBatis 的核心配置文件是干什么的? 它的结构是怎样的? 哪些是必须配置的,哪些是可选的?

MyBatis 的核心配置文件&#xff08;通常命名为 mybatis-config.xml&#xff09;是 MyBatis 应用程序的入口点&#xff0c;它定义了 MyBatis 的全局配置信息 。 核心配置文件的作用&#xff1a; 配置 MyBatis 的运行时行为: 通过 <settings> 标签设置全局参数&#xff…...

哪些业务场景更适合用MongoDB?何时比MySQL/PostgreSQL好用?

哪些业务场景更适合用MongoDB&#xff1f;何时比MySQL/PostgreSQL好用&#xff1f; 就像淘宝的个性化推荐需要灵活调整商品标签&#xff0c;MongoDB这种"变形金刚"式的数据库&#xff0c;在处理以下三类中国特色业务场景时更具优势&#xff1a; 一、动态数据就像&q…...

Java学习——day20

文章目录 1. 异常处理与优化1.1 在文件操作中使用 try-catch1.2 try-with-resources 语法1.3 使用 finally 块关闭资源1.4 代码健壮性与优化 2. 实践任务2.1 改进思路2.2 示例改进要点2.3 检查点 3. 总结3.1 改进后的完整代码&#xff1a; 4. 今日生词 今日学习目标&#xff1a…...

基于Python+SQLite实现校园信息化统计平台

一、项目基本情况 概述 本项目以清华大学为预期用户&#xff0c;作为校内信息化统计平台进行服务&#xff0c;建立网页端和移动端校内信息化统计平台&#xff0c;基于Project_1的需求实现。 本项目能够满足校内学生团体的几类统计需求&#xff0c;如活动报名、实验室招募、多…...

[多线程]基于阻塞队列(Blocking Queue)的生产消费者模型的实现

标题&#xff1a;[多线程]基于阻塞队列(Blocking Queue)的生产消费者模型的实现 水墨不写bug 文章目录 一、生产者消费者模型特点&#xff1a;二、实现2.1详细解释1. 成员变量2. 构造函数3. Isfull 和 Isempty4. Push 函数5. Pop 函数6. 析构函数7. GetSize 函数 三、总结与多线…...

vue组件库el-menu导航菜单设置index,地址不会变更的问题

请先确认 1.路由已配置好 route-index.js如下&#xff0c; 2.view-ProHome.vue中已预留路由展示位 3.导航菜单复制组件库&#xff0c;并做修改 其中index与路由配置的地址一致 运行后发现点击菜单&#xff0c;url地址还是不变&#xff0c;查看组件库 Element - The worlds …...

JavaScript通过文件地址获取文件名称

在 JavaScript 中&#xff0c;可以通过文件链接地址提取文件名称。文件名称通常是链接中最后一个 / 之后的部分&#xff0c;可能还包含查询参数或哈希片段。以下是几种常见的提取文件名称的方法&#xff1a; 方法 1&#xff1a;使用 URL 对象和 pathname URL 对象可以解析链接…...

MySQL 优化方案

一、MySQL 查询过程 MySQL 查询过程是指从客户端发送 SQL 语句到 MySQL 服务器&#xff0c;再到服务器返回结果集的整个过程。这个过程涉及多个组件的协作&#xff0c;包括连接管理、查询解析、优化、执行和结果返回等。 1.1 查询过程的关键组件 连接管理器&#xff1a;管理…...

智能对话小程序功能优化day1-登录鉴权

目录 1.数据库表构建。 2.完善登录相关的实例对象。 3.登录相关功能实现。 4.小程序效果。 最近尝试下trae加入claude3.7后的读图生成代码功能&#xff0c;可以看到简单的页面一次性生成确实准确率高了不少&#xff0c;想起来之前笔记中开发的智能问答小程序功能还是有些简…...

【架构艺术】Go语言微服务monorepo的代码架构设计

近期因为项目架构升级原因&#xff0c;笔者着手调研一些go项目monorepo的代码架构设计&#xff0c;目标是长期把既有微服务项目重要的部分都转移到monorepo上面&#xff0c;让代码更容易维护&#xff0c;协作开发更加方便。虽然经验不多&#xff0c;但既然有了初步的调研&#…...

MinIO的预签名直传机制

我们传统使用MinIo做OSS对象存储的应用方式往往都是在后端配置与MinIO的连接和文件上传下载的相关接口&#xff0c;然后我们在前端调用这些接口完成文件的上传下载机制&#xff0c;但是&#xff0c;当并发量过大&#xff0c;频繁访问会对后端的并发往往会对服务器造成极大的压力…...

谈谈List,Set,Map的区别

List、Set 和 Map 是 Java 集合框架&#xff08;Java Collections Framework&#xff09;中的三种主要接口&#xff0c;它们各自有不同的特点和用途。以下是它们的区别和使用场景的详细解释&#xff1a; 1. List&#xff08;列表&#xff09; 1.1 特点 有序集合&#xff1a;Li…...

投资晚报 3.12

一、 晚间要闻 1、CME美联储观察&#xff1a;美联储3月降息25个基点的概率为3% 3 月 12 日&#xff0c;据 CME「美联储观察」数据&#xff0c;美联储 3 月降息 25 个基点的概率为 3%&#xff0c;维持不变的概率为 97%。 2、美国劳工统计局将于今晚20:30公布2月CPI数据 3 月…...

蓝桥 2109统计子矩阵

问题描述 给定一个NM 的矩阵 A, 请你统计有多少个子矩阵 (最小 11, 最大 NM) 满足子矩阵中所有数的和不超过给定的整数 K ? 输入格式 第一行包含三个整数 N,M 和 K. 之后 NN 行每行包含 M 个整数, 代表矩阵 A. 输出格式 一个整数代表答案。 样例输入 3 4 10 1 2 3 4 5…...

Qt开源控件库(qt-material-widgets)的编译及使用

项目简介 qt-material-widgets是一个基于 Qt 小部件的 Material Design 规范实现。 项目地址 项目地址&#xff1a;qt-material-widgets 本地构建环境 Win11 家庭中文版 VS2019 Qt5.15.2 (MSVC2019) 本地构建流程 克隆后的目录结构如图&#xff1a; 直接使用Qt Crea…...

vue的 props 与 $emit 以及 provide 与 inject 的 组件之间的传值对比

好的&#xff0c;下面是 props 与 $emit 以及 provide 与 inject 的对比&#xff1a; 1. props 与 $emit props&#xff1a;父组件通过 props 向子组件传递数据&#xff0c;子组件接收后不可修改。子组件只能读取 props 传递给它的数据。如果需要修改或更新父组件的状态&#…...

用python批量生成文件夹

问题描述 当批量生成文件夹时&#xff0c;手动右键创建文件夹是一个繁琐的过程&#xff0c;尤其是文件夹的命名过程。假设从3月10日到3月19日&#xff0c;每天要为某个日常工作创建一个名为2025031x的文件夹&#xff0c;手动创建文件夹并命名费时费力。 百度给出了以下四种方法…...

Json 转义符号处理(Mongo changeStream op log)

使用mongo-kafka组件订阅mongo的changeStream得到 一个带有很多转义符号的json字符串 "{\"_id\": {\"_data\": \"8267D0F733000001502B022C0100296E5A1004366730C56F7E41A790BDA4CF23259A4F46645F6964006467B91713A024A00E32CDF6800004\"},…...

懒加载(Lazy Loading):原理、实现与优化策略

懒加载&#xff08;Lazy Loading&#xff09; 是一种优化网页性能的技术&#xff0c;主要用于延迟加载非关键资源&#xff08;如图片、视频、脚本等&#xff09;&#xff0c;直到它们真正需要被使用时才加载。懒加载可以显著减少页面初始加载时间&#xff0c;降低带宽消耗&…...