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

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.xdnf.cn/news/17228.html

相关文章:

  • 【第6话:相机模型2】相机标定在自动驾驶中的作用、相机标定方法详解及代码说明
  • Python虚拟环境完全指南:pyenv vs venv 在macOS上的使用详解
  • 【代码随想录day 12】 力扣 102.107.199. 二叉树的层序遍历
  • SQL Server 2000企业管理器不能执行查询
  • cygwin+php教程(swoole扩展+redis扩展)
  • 利用DeepSeek改写并增强测试Duckdb和sqlite的不同插入方法性能
  • 高可用改造之构建​​双活冗余的TDengine时序数据处理架构
  • LeetCode——2411. 按位或最大的最小子数组长度
  • 浮动路由和BFD配置
  • 协同过滤基础——基线预测器(Baseline Predictors)
  • hyper-v实战系列:显卡虚拟化(GPU分区)--windows篇详解
  • Spring配置JDBC,使用JdbcTemplate套件和Druid套件
  • java回顾八股文中想起的知识点
  • Docker使用的常见问题
  • 开源密码恢复实用程序 Hashcat 7.0.0 发布
  • cf.训练
  • 数据结构 实现单链表
  • STM32学习笔记2-GPIO的输出模式
  • 机器学习通关秘籍|Day 03:决策树、随机森林与线性回归
  • 去哪儿StarRocks实践
  • 2025国赛数学建模C题详细思路模型代码获取,备战国赛算法解析——层次分析法
  • RabbitMQ削峰填谷详解:让系统在流量洪峰中“稳如泰山”
  • 零基础人工智能学习规划之路
  • 从LCM到SomeIP,再到DDS:技术演进与工作原理剖析
  • NuGet03-私有仓库搭建
  • 虚幻GAS底层原理解剖二 (GE)
  • NumPy 重要知识点总结
  • 【RabbitMQ】高级特性—消息确认详解
  • PYQT学习笔记:signal 和 slot(信号与槽)
  • 数学建模算法-day[15]