欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > LeeCode2294划分数组使最大值为K

LeeCode2294划分数组使最大值为K

2025/12/14 8:45:33 来源:https://blog.csdn.net/2301_80195716/article/details/148774854  浏览:    关键词:LeeCode2294划分数组使最大值为K

项目场景:

给你一个整数数组 nums 和一个整数 k 。你可以将 nums 划分成一个或多个 子序列 ,使 nums 中的每个元素都 恰好 出现在一个子序列中。

在满足每个子序列中最大值和最小值之间的差值最多为 k 的前提下,返回需要划分的 最少 子序列数目。

子序列 本质是一个序列,可以通过删除另一个序列中的某些元素(或者不删除)但不改变剩下元素的顺序得到。

提示:

  • 1 <= nums.length <= 105
  • 0 <= nums[i] <= 105
  • 0 <= k <= 105


问题描述

        根据题意,这题要保证子序列的最大值和最小值的最大差值为K,那子序列中元素顺序对结果不会有影响,为了方便,我们对数组进行排序。对排序后的数组进行遍历,如果x-mn>k说明此时序列的最大值-最小值>k了,不满足要求,需要将此时的x放到新的子序列里,ans加1。因为num是经过排序的,则此时新序列的最小值mn被设置为x,之后持续循环即可。

class Solution:def partitionArray(self, nums: List[int], k: int) -> int:nums.sort()##数组排序ans=0mn=-inf##初始值设为无穷小for x in nums:if x-mn>k:ans+=1##子序列数量加1mn=xreturn ans

        以上为本篇文章的全部内容,感谢你抽出宝贵的时间阅读这篇文章。如果你有任何疑问或建议,欢迎在评论区留言,我们一起交流进步。愿你的代码之路越走越顺,生活充满阳光!      

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词