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

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

相关文章:

  • Python异步爬虫与代理完美结合
  • Prompt Tuning:生成的模型文件有什么构成
  • 购物商城网站 Java+Vue.js+SpringBoot,包括商家管理、商品分类管理、商品管理、在线客服管理、购物订单模块
  • LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考
  • uefi协议设计目的
  • linux——磁盘和文件系统管理
  • python打卡训练营打卡记录day45
  • 数学运算在 OpenCV 中的核心作用与视觉效果演示
  • 本地部署大模型实战:使用AIStarter一键安装Ollama+OpenWeb教程(含最新版本更新指南)
  • 【图像处理3D】:焦距的像素单位标定
  • 使用API有效率地管理Dynadot域名,查看域名市场中所售域名的详细信息
  • 宠物车载安全座椅市场报告:解读行业趋势与投资前景
  • MyBatis-Plus深度全解:从入门到企业级实战
  • 旋转字符串的解题思路与算法分享
  • Offline Transition Modeling via Contrastive Energy Learning
  • 【iSAQB软件架构】软件架构中构建块的视图:黑箱、灰箱和白箱及其交互机制
  • vue和uniapp聊天页面右侧滚动条自动到底部
  • 计算机网络领域所有CCF-A/B/C类期刊汇总!
  • 低代码逻辑引擎配置化实战:三步穿透审批记录查询
  • 鞋内测量新方案:Moticon传感器鞋垫OpenGo在运动科学中的平衡测试应用
  • BIM Revit教程(十一)如何使用机器学习实现 MEP 布局自动化?
  • NumPy数组操作完全指南:从入门到精通
  • 【Zephyr 系列 9】Zephyr 与设备树机制详解:如何为你的板子编写 Devicetree
  • open3d:使用彩色图和深度图生成点云
  • 拆解实战案例:电商ERP管理系统从需求到原型全流程设计
  • 深度学习习题3
  • IDEA 包分层显示设置
  • Postgresql字符串操作函数
  • 《前端面试题:CSS3新特性》
  • 结合PDE反应扩散方程与物理信息神经网络(PINN)进行稀疏数据预测的技术方案