链接:1356. 根据数字二进制下 1 的数目排序

题解:https://leetcode-cn.com/problems/sort-integers-by-the-number-of-1-bits/solution/gen-ju-shu-zi-er-jin-zhi-xia-1-de-shu-mu-pai-xu-by/

class Solution {public:int one_num(int num) {int count = 0;while(num != 0) {if(num%2 == 1) {++count;}num/=2;}return count;}vector<int> sortByBits(vector<int>& arr) {// key表示1的个数 ,value为一个map,value的first为数字,val.second为数字出现的个数map<int, map<int, int>> table;for(auto num : arr) {// 求得一个数字1的个数int cnt = one_num(num);// 记录数量++table[cnt][num];}vector<int> result;// 先申请空间,防止vector扩容构造result.reserve(arr.size());for(auto ite : table) {for(auto num : ite.second) {for(int cnt = num.second; cnt > 0; --cnt) {result.push_back(num.first);}}}return std::move(result);}
};
class Solution {
public:int get(int x){int res = 0;while (x) {res += (x % 2);x /= 2;}return res;}vector<int> sortByBits(vector<int>& arr) {vector<int> bit(10001, 0);for (auto x: arr) {bit[x] = get(x);}sort(arr.begin(),arr.end(),[&](int x,int y){if (bit[x] < bit[y]) {return true;}if (bit[x] > bit[y]) {return false;}return x < y;});return arr;}
};

class Solution {
public:vector<int> sortByBits(vector<int>& arr) {vector<int> bit(10001, 0);for (int i = 1;i <= 10000; ++i) {bit[i] = bit[i>>1] + (i & 1);}sort(arr.begin(),arr.end(),[&](int x,int y){if (bit[x] < bit[y]) {return true;}if (bit[x] > bit[y]) {return false;}return x < y;});return arr;}
};

1356. 根据数字二进制下 1 的数目排序相关推荐

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

    golang的自定义排序 根据数字二进制下 1 的数目排序 给你一个整数数组 arr .请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序. 如果存在多个数字二进制中 1 的数目相同,则必须 ...

  2. leetcode 1356. 根据数字二进制下 1 的数目排序(排序)

    给你一个整数数组 arr .请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序. 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列. 请你返回排序后的数组. 示例 ...

  3. 力扣 根据数字二进制下1的数目排序

    力扣 根据数字二进制下1的数目排序 题目描述 给你一个整数数组 arr .请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序. 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值 ...

  4. 1356. Sort Integers by The Number of 1 Bits 根据数字二进制下 1 的数目排序

    给你一个整数数组 arr .请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序. 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列. 请你返回排序后的数组.   示 ...

  5. PHP不包括字母,数字和下划线的webshell

    文章目录 前言 知识铺垫 PHP中异或(^)概念 PHP取反(~)概念 不用数字构造数字 用字符串自增,获取字符 webshell php5和7的差异. 不用数字和字母的 shell 非字母.数字的字 ...

  6. 数字环境下版权制度的主要特点和功能

    由中国国家版权局.世界知识产权组织(WIPO)主办的"一带一路"版权国际论坛在成都举行,近200名中外嘉宾就数字环境下版权与创意产业新挑战和新机遇等问题进行经验交流.思想碰撞. 世 ...

  7. java 校验姓名只能包含中英文_java代码验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数...

    package com.sangedabuliu.www; import java.util.regex.Matcher; import java.util.regex.Pattern; public ...

  8. php给定一个起始数字,下标值0,递减的值,求出他所有递减值的开头数字和结尾数字。

    php给定一个起始数字,下标值0,递减的值,求出他所有递减值的开头数字和结尾数字.并打印出来 代码如下: //php给定一个起始数字,下标值0,递减的值,求出他所有递减值的开头数字和结尾数字.publ ...

  9. 『ACM-算法-lowbit』算法竞赛进阶指南--lowbit运算,找到二进制下所有是1的位

    写在前面:我们主要还是分享算法的模板,而不是去刨析算法的原理! 主要思想是,对于非负整数n,输出n最低位的1所在位,并不断把n赋值成n-(n&-n),直至n=0. 为了提高效率,我们使用Has ...

最新文章

  1. 最新dnsmasq安装部署详解(centos6)
  2. portainer图形化监控
  3. 产品经验谈:阿里B2B电商-新零售产地供应链的思考与实践
  4. java字符串是不是整数的函数_java判断字符串是否为整数的方法
  5. 电热耦合_作者特稿︱电网运行环境下基于电热耦合潮流的架空线路应力预估
  6. 数据结构括号匹配代码_栈:如何实现有效括号的判断?
  7. csr 蓝牙驱动_【BTS001】开源蓝牙协议栈BTStack初体验
  8. WPS最大的败笔是“免费用,广告弹窗”,难怪用户纷纷使用office
  9. html怎么实现追加表格,jQuery实现html表格动态添加新行的方法
  10. cnpack转换dfm文件
  11. nfs总结之工作原理
  12. Vue 项目中各种痛点问题及解决方案
  13. BigWorld—chunck系统
  14. 计算机必须安装flash吗,如果计算机提示,如何安装Flash Player?
  15. outlook中抄送操作和163撤回邮件
  16. aoc s32p Android 内存,AOC企鹅影霸S32P评测:干掉智能电视?
  17. ZigBee自组网地址分配与路由协议技术详解
  18. Verilog语法之运算符
  19. Android 根据屏幕尺寸适配控件大小(按比例缩放)
  20. bdsup2sub java_蓝光原盘压制Remux和Rip、Re 图文实例教程

热门文章

  1. centos6.5安装mono
  2. phpstudy 线上添加域名
  3. cas-server Jdbc 连接读取用户(5)
  4. HTTP协议与HTTPS的区别
  5. 【HDOJ】2266 How Many Equations Can You Find
  6. .iOS APP Project or Mac APP Project编译错误提示: My Mac 64-bit is not valid for Running the scheme...
  7. cygwin boost
  8. Springboot自定义注解实现用户登录状态校验(一)
  9. spring boot admin 自定义
  10. 【HDUOJ】1213 How many tables