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

Leetcode 2948. Make Lexicographically Smallest Array by Swapping Elements

  • Leetcode 2948. Make Lexicographically Smallest Array by Swapping Elements
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:2948. Make Lexicographically Smallest Array by Swapping Elements

1. 解题思路

这一题其实思路上就是分组排序,显然,对于一系列元素,只要满足对任意元素,存在其他某一元素与其差值在limit之内,那么最终我们总能对这些元素在若干次排序后实现有序排列。

因此,我们只需要对原始的元素进行分组,然后分别进行排序即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def lexicographicallySmallestArray(self, nums: List[int], limit: int) -> List[int]:
        n = len(nums)
        nums = [(x, i) for i, x in enumerate(nums)]
        nums = sorted(nums)
        
        ans = [0 for _ in range(n)]
        idx = 0
        while idx < n:
            rb = idx+1
            while rb<n and nums[rb][0] - nums[rb-1][0] <= limit:
                rb += 1
            locs = sorted(x[1] for x in nums[idx:rb])
            for (val, _), i in zip(nums[idx:rb], locs):
                ans[i] = val
            idx = rb
        return ans

提交代码评测得到:耗时1193ms,占用内存40.6MB。


http://www.kler.cn/a/153032.html

相关文章:

  • 一文带你了解网络安全简史
  • chrome vue devTools安装
  • 【Android知识笔记】架构专题(三)
  • OpenVINO异步Stable Diffusion推理优化方案
  • 中国平安蝉联MSCI-ESG评级“A“级 保持“综合保险及经纪”类别亚太区第一位
  • 【历史资料】北京交通通信原理复试题汇总
  • 血的教训------入侵redis之利用python来破解redis密码
  • Angular 中如何返回上一页?
  • 2023年12月02日新闻简报(国内国际)
  • Django:通过user-agent判断请求是来自移动端还是PC端(电脑端)
  • TCP 重传、滑动窗口、流量控制、拥塞控制的剖析
  • 在线陪诊系统: 医学科技的革新之路
  • Abaqus许可证无效问题
  • 聊聊logback的addtivity属性
  • 【数电笔记】基本和复合逻辑运算
  • 麒麟操作系统光盘救援模式
  • 存储虚拟化的写入过程
  • jsoup登录日志平台后调企业微信机器人自动发送错误日志告警
  • 基于数据挖掘的智能停车场运营数据分析系统(毕业论文)
  • 前向与反向过程的全连接与链式求导法则