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

python每日一题 贪心算法

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

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

重复这个过程恰好 k 次。可以多次选择同一个下标 i 。

以这种方式修改数组后,返回数组 可能的最大和 。

意思就是我可以将这个数组中的k个元素进行加负号的变换 首先我先找数组中是负数的 找到我就给加上一个负号 将这个下标统计下来 然后如果负数的已经没了 看剩下的是 奇数还是偶数 如果是偶数 那么就直接将数组的所有值加起来就行(这样一看 貌似也不需要统计下标 因为是多变的)如果是奇数 看有没有0 如果有0的话 那么也可以直接返回数组和 如果没0 那么就找一个最小的正数 将其变为负数 统计数组和

OK 那么思路就是 先将数组中的所有元素变为正数 并且记录一个正数的最小值 先记下来  如果有元素 0 那么也记录下来 之后就不用再遍历一次了

然后看剩下的K是奇数还是偶数 如果是偶数 那不用管  如果是奇数 如果有0 那么直接统计 如果没有 将那个正数最小值加上一个负号 然后进行统计 (其实也可以在变为正数的时候直接统计和)

然后我就发现了问题 如果k的数目还没有数组中的负数多咋办 这样其实应该先将负数最小的先变为正的再说 

那不如直接对数组进行排序 排序之后从负数那边开始 将负数变为正数  然后如果全部变成正数 如果没0的话 只能对正数最小的进行消耗 那么再进行一次排序 即可 我有点担心这个会超出运行时间 但是还是先试试

class Solution(object):def largestSumAfterKNegations(self, nums, k):nums=sorted(nums)#首先进行排序Cl_0=Falsefor i in range(len(nums)):if nums[i]<0 :if k>=1:nums[i]=-nums[i]k-=1else:return sum(nums)elif nums[i]==0:Cl_0 = Truebreakelse:breakif Cl_0==True:return sum(nums)#如果没0,但是剩余的k是偶数个if k%2==0:return sum(nums)else:nums = sorted(nums)nums[0]=-nums[0]return sum(nums)solution=Solution()
result=solution.largestSumAfterKNegations([4,-2,-3],1)
print(result)

没超出运行时间 运行速度100% 思路就是先把负数变成正的 如果k不够 那直接return sum 就行 如果K够了 有0的话最好 如果没有0 那么就找一个正数最小的 

还好我今天的收尾是选择一个我擅长的并且简单的 不然又要破防了 大家晚安~

http://www.lryc.cn/news/611829.html

相关文章:

  • 线程-线程池篇(二)
  • 基于Hadoop的木鸟民宿数据分析与可视化、民宿价格预测模型系统的设计与实现
  • 使用 gptqmodel 量化 Qwen3-Coder-30B-A3B-Instruct
  • MyBatis基础操作完整指南
  • smart-water表设计方案
  • 百度华为硬件笔试机试题-卷4
  • 希赛《华为 HCIA-Datacom 》核心考点之 NAT 技术解析
  • 解决远程连接云服务器mysql编号1130问题
  • 文本编码扫盲及设计思路总结
  • 应急响应排查(windows版)
  • JAVA高级编程第七章
  • 【Linux系统】进程间通信:命名管道
  • 嵌入式处理器指令系统:精简指令集RISC与复杂指令集CISC的简介,及区别
  • Chrontel 昆泰【CH7107B-BF】CH7107B ——HDMI to CVBS Converter
  • 【arcmap中shp图层数据导入到postgresql数据库中,中文出现乱码,怎么办?】
  • 使用 Maxwell 和 RabbitMQ 监控 Mysql Flowable 表变更
  • 医学影像PACS系统的设计与实现,PACS系统源码
  • LMS/NLMS最小均值算法:双麦克风降噪
  • python中的推导式
  • YOLOv5 上使用 **labelImg** 标注并训练自己的数据集
  • PyTorch生成式人工智能——Hugging Face环境配置与应用详解
  • 【32】C++实战篇—— m行n列的坐标点,求每行相邻点X差值dX,每列相邻点y差值dY,并以矩阵形式左端对齐
  • 远程连接----ubuntu ,rocky 等Linux系统,WindTerm_2.7.0
  • Spring选择哪种方式代理?
  • 阿里云DMS Data Copilot——高效智能的数据助手,助力企业实现数据驱动的未来
  • 深入理解 Maven POM 文件:核心配置详解
  • Jenkinsfile各指令详解
  • Java学习第一百零九部分——Jenkins(一)
  • 基于通用优化软件GAMS的数学建模和优化分析
  • AlphaEarth模型架构梳理及借鉴哪些深度学习领域方面的思想