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

LeetCode 1356.根据数字二进制下1的数目排序

题目

给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。

如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。

请你返回排序后的数组。

提示:

  • 1 <= arr.length <= 500
  • 0 <= arr[i] <= 10^4

思路:首先,根据 1的个数 和 当前数值,生成一个新的数字,来 存储 每一个数字 的 1的个数 和 本身的值。接下来,将 存储的数字,还原成最初始的数字,并根据 1的个数 和 当前数值 排序。

代码

class Solution {public int[] sortByBits(int[] arr) {int length = arr.length;for (int i = 0; i < length; i++) {// 因为arr[i]最大是10^4,还原时 arr[i]是余数// 因此 %= 10^5 放大也是放大10^5arr[i] = Integer.bitCount(arr[i]) * 100000 + arr[i];}Arrays.sort(arr);for (int i = 0; i < length; i++) {arr[i] %= 100000;}return arr;}
}

性能

时间复杂度o(nlogn)快排时间

空间复杂度o(logn)  快排递归调用栈

http://www.dtcms.com/a/232348.html

相关文章:

  • 重磅更新! 基于Gemini 2.5 Pro打造的AI智能体PlantUML-X上线!
  • VSCode主题定制:CSS个性化你的编程世界
  • 服务器CPU被WMI Provider Host系统进程占用过高,导致系统偶尔卡顿的排查处理方案
  • PostgreSQL 的扩展pg_prewarm
  • 高防服务器能够抵御哪些网络攻击呢?
  • 【Python 算法零基础 4.排序 ⑨ 堆排序】
  • 代码随想录算法训练营第九天| 151.翻转字符串里的单词、55.右旋转字符串 、字符串总结
  • 深度学习学习率优化方法——pytorch中各类warm up策略
  • 【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
  • 服务器中CC攻击的特点有哪些?
  • 【Go语言基础【5】】运算符基础
  • 1、Go语言基础中的基础
  • llm-d:面向Kubernetes的高性能分布式LLM推理框架
  • 阿里云 Linux 搭建邮件系统全流程及常见问题解决
  • ES集群磁盘空间超水位线不可写的应急处理
  • 计算机网络备忘录
  • 游戏开发中的CI/CD优化案例:知名游戏公司Gearbox使用TeamCity简化CI/CD流程
  • Java线程安全集合类
  • 余氯传感器在智慧水务系统中如何实现IoT集成
  • Spring Boot + Elasticsearch + HBase 构建海量数据搜索系统
  • 工厂模式 + 模板方法模式 + 策略模式的适用场景
  • 数据可视化大屏案例落地实战指南:捷码平台7天交付方法论
  • 如何选择专业数据可视化开发工具?为您拆解捷码全功能和落地指南!
  • Unity VR/MR开发-VR开发与传统3D开发的差异
  • Next.js 中间件鉴权绕过漏洞 CVE-2025-29927
  • 【前端】掌握HTML/CSS宽高调整:抓住问题根源,掌握黄金法则
  • Python 网络编程 -- WebSocket编程
  • 从零开始的云计算——番外实战,iptables防火墙项目
  • 压敏电阻的选型都要考虑哪些因素?同时注意事项都有哪些?
  • python执行测试用例,allure报乱码且未成功生成报告