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

题1356. 根据数字二进制下 1 的数目排序 Python3 class Solution: def sortByBits(self, arr: List[int]) -> List[int]: def _bin(x): res = 0 while x: x = x & (x - 1) # 将最末尾的1变为0 res += 1 return res ... 阅读详情

直接除基取余法暴力

class Solution {
    int m[10005];
public:
    vector<int> sortByBits(vector<int>& arr) {
        memset(m, 0, sizeof(m));
        for(int i : arr)
        {
            int x = i; // 不改变原数组
            if(!m[x]) // 未计算过的数字
            {
                while(x) // 除基取余法
                {
                    if(x % 2) ++m[i];
                    x /= 2;
                }
            }
        }
        sort(arr.begin(), arr.end(),
            [&](const int a, const int b){return m[a] == m[b] ? a < b : m[a] < m[b];});
        return arr;
    }
};

用时16ms

分析答案中采用的位运算:

    int get(int x){
        int res=0;
        while (x) res+=x&1,x>>=1;
        return res;
    }

x & 1即判断x对应的二进制末位是否为1,res+过后,x >>= 1整体右移一位,最后一位被移掉,达到统计对应二进制中1的个数的效果,更快

修改后用时12ms

#include <bits/stdc++.h>
using namespace std;

class Solution {
    int m[10005];
public:
    vector<int> sortByBits(vector<int>& arr) {
        memset(m, 0, sizeof(m));
        for(int i : arr)
        {
            int x = i; // 不改变原数组
            if(!m[x]) // 未计算过的数字
            {
                while(x) // 除基取余法
                {
                    if(x & 1) ++m[i];
                    x >>= 1;
                }
            }
        }
        sort(arr.begin(), arr.end(),
            [&](const int a, const int b){return m[a] == m[b] ? a < b : m[a] < m[b];});
        return arr;
    }
};
Voronoi算法构建多晶 孪晶多晶 采用孪晶的原子链作为种子通过voronoi算法可以得到孪晶多晶结构。 孪晶种子: txt文件不需要特殊设置 box 150 150 150 random 8 得到孪晶多晶: 通过改变孪晶种子的长度可以得到不同孪晶片层厚度的多晶。 准二维柱晶 所有晶粒在某一维度的晶向一致,晶粒仅在平面内具有旋转关系,所有晶界为旋转对称晶界,这种结构的多晶其位错滑移在某些方向受限,但是能极大的提高晶粒... 阅读详情

相关推荐

Blender学习笔记——制作向量场

#下载Blender - UE4 - FGA Vector Field Editor插件的压缩包,Github上的下载地址如下:https://github.com/isathar/Blender_UE4_VectorFieldEditor #下载并解压后将FGA VectorFields文件夹复制到C:\Program Files\Blender Foundation\Blender 2.83\2.83\scripts\addons目录下,此步骤可根据blender安装的位置自行调整,只要放入addon

wychao2020的博客 1724

遇到根据某个变量个数比较大小,变量个数一样比较变量大小时的技巧

给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1: 输入:arr = [0,1,2,3,4,5,6,7,8] 输出:[0,1,2,4,8,3,5,6,7] 解释:[0] 是唯一一个有 0 个 1 的数。 [1,2,4,8] 都有 1 个 1 。 [3,5,6] 有 2 个 1 。 [7] 有 3 个 1 。 按照 1 的个数排序得到的结果数组为 [0,1,

weixin_43992845的博客 558

雷达信号处理DDC数字下变频

由于接收到的雷达信号频率较高,不能对其进行直接采样并数据处理,所以需要对雷达信号进行预处理,在降低其采样率的同时,将其由中频降低到低频,然后对输出的基带信号进行后续的解析,以便于获取雷达信号的特征参数。 本文采用数字正交下变频,将单通道信号转化为正交双通道信号,数字下变频(DDC)的原型为模拟下变频,通过对窄带雷达信号或单频信号进行数字混频,然后对信号进行正交采样,提取 I、Q 两路正交分量,最后通过滤波去除信号中的高频分量,将信号由中高频搬移至低频。 模拟下变频的系统框图如下: 其数学推导.

qq_44033461的博客 5227

算法:根据数字二进制下 1 的数目排序

题目 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 思路 本题首先要将数字转变为二进制,然后再统计二进制中的1的数量。 如果1的数量相同,则按数值的大小排列。 所以本题的关键在于compare的重写 代码 class Solution { public int[] sortByBits(int[] arr) { Integer[] new

weixin_40925514的博客 407

快速玩转 Llama2!机器学习 PAI 最佳实践(一)—低代码 Lora 微调及部署

本实践将采用阿里云机器学习平台PAI-快速开始模块针对 Llama-2-7b-chat 进行开发。PAI-快速开始支持基于开源模型的低代码训练、布署和推理全流程,适合想要快速开箱体验预训练模型的开发者。

阿里云云栖号 1766

深入解析V4L2框架与高通KMD在Camera驱动中的协同设计

本文深入解析了V4L2框架与高通KMD在Camera驱动中的协同设计。V4L2作为Linux内核标准视频驱动框架,提供了统一的设备抽象与数据流管理;而高通KMD则在其基础上,通过引入CRM等核心模块,构建了一套针对移动平台复杂相机系统的高效内核态驱动架构,实现了硬件配置与执行的解耦与智能调度。

qq_27496129的博客 1145

LeetCode第 1356 题:根据数字二进制下 1 的数目排序(C++)

1356. 根据数字二进制下 1 的数目排序 - 力扣(LeetCode) 简单题,自己设计一个排序规则就可以了,可以使用bitset简化操作: class Solution { public: struct cmp{ bool operator()(int a, int b){ if(bitset<14>(a).count() == bitset<32>(b).count()) return a < b;//最大10^4

zj 443

从流体力学到深度学习:手把手教你用PINN预测涡流场(基于TensorFlow2.10+GPU)

本文详细介绍了如何利用物理信息神经网络(PINN)结合TensorFlow 2.10和GPU加速,预测Navier-Stokes方程的涡流场。通过核心原理讲解、实战环境配置、网络架构设计及物理约束实现,帮助读者掌握从流体力学到深度学习的跨学科技术应用,特别适合处理复杂流体问题和非定常流动场景。

weixin_29048309的博客 212

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

给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1: 输入:arr = [0,1,2,3,4,5,6,7,8] 输出:[0,1,2,4,8,3,5,6,7] 解释:[0] 是唯一一个有 0 个 1 的数。 [1,2,4,8] 都有 1 个 1 。 [3,5,6] 有 2 个 1 。 [7] 有 3 个 1 。 按照 1 的个数排序得到的结果数组为 [0,1,

WhiteGray的博客 379

同步整流buck电路图设计:手把手入门必看

从零开始拆解同步整流Buck电路图及其原理,手把手带你画出关键拓扑、选型MOSFET、分析续流路径。重点讲清占空比控制逻辑与体二极管导通损耗的规避方法,让buck电路图及其原理真正落地可调、稳定可靠。

weixin_33308579的博客 995

告别黑盒调试:用MMSegmentation可视化工具链,从训练到评估一目了然

本文介绍了如何利用MMSegmentation的可视化工具链,从训练到评估实现语义分割模型的透明化调试。通过整合日志分析、混淆矩阵、PR曲线等工具,开发者可以快速定位模型问题,优化性能。文章详细展示了训练曲线分析、性能剖析、混淆矩阵解读和PR曲线应用等关键步骤,帮助用户告别黑盒调试,提升模型开发效率。

weixin_29100927的博客 102

我的力扣算法1356-根据数字二进制1的数目排序

ok 我又来了 虽然是简单题,但是我没办法重拳出击,因为这里如果会一个函数的话,会特别简单,而我刚好不会 看题: 很简单,把数组中的数转换为二进制,然后统计一下每个二进制里的1有多少个,数组根据1的多少重新排序,如果1相同,就按十进制的大小排。 看代码: class Solution { public: vector<int> sortByBits(vector<int>& arr) { sort(arr.begin(

一坠的博客 228

openclaw中文版安装教程和常用命令

OpenClaw 中文版的和,涵盖本地一键部署、Docker 隔离部署、阿里云极速部署三种方式,以及六大类高频命令,方便你快速上手和日常运维。

suny8的专栏 2997

LeetCode1356根据数字二进制下1的数目排序

给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1: 输入:arr = [0,1,2,3,4,5,6,7,8] 输出:[0,1,2,4,8,3,5,6,7] 解释:[0] 是唯一一个有 0 个 1 的数。 [1,2,4,8] 都有 1 个 1 。...

max119xlx的博客 430

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

python-leetcode-1356. 根据数字二进制下 1 的数目排序

可以使用 Python 的sorted函数,结合计算二进制中1的个数作为排序的主要依据,数值大小作为次要依据。

Lucy_wzw的博客 275

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

1.题目 示例: 。 来源:力扣(LeetCode) 链接: 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 2.题解 。 时间复杂度: 空间复杂度:

HarvestWu的博客 273

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

1 题目描述 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1: 输入:arr = [0,1,2,3,4,5,6,7,8] 输出:[0,1,2,4,8,3,5,6,7] 解释:[0] 是唯一一个有 0 个 1 的数。 [1,2,4,8] 都有 ...

努力变得不菜的菜鸡的博客 608

LeetCode_1356_根据数字二进制下1的数目排序

题目链接 https://leetcode-cn.com/problems/sort-integers-by-the-number-of-1-bits/ 解题思路 因为arr中每一个数都不会超过10410^4104,所以对于每个arr[i]计算出二进制中1的个数k 然后arr[i] += k * 10001,然后再对arr[]进行排序。这样就可以实现按照二进制中数字1的数目升序 最后返回arr[] % 10001即可 AC代码 class Solution { public int[] so

Fitz的博客 258

leetcode1356 根据数字二进制下 1 的数目排序

题目描述: 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 输入:arr = [0,1,2,3,4,5,6,7,8] 输出:[0,1,2,4,8,3,5,6,7] 解释:[0] 是唯一一个有 0 个 1 的数。 [1,2,4,8] 都有 1 个 1 。 [3,5,6] 有 2 个 1 。 [7] 有 3 个 1 。 按照 1 的个数排序得到的结果数组为 [0,1,

wgxaaa的博客 180

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

题目描述: 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1: 输入:arr = [0,1,2,3,4,5,6,7,8] 输出:[0,1,2,4,8,3,5,6,7] 解释:[0] 是唯一一个有 0 个 1 的数。 [1,2,4,8] 都有 1 个 1 。 [3,5,6] 有 2 个 1 。 [7] 有 3 个 1 。 按照 1 的个数排序得到的结果数组为

weixin_44171872的博客 235

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

golang的自定义排序 根据数字二进制下 1 的数目排序 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1: 输入:arr = [0,1,2,3,4,5,6,7,8] 输出:[0,1,2,4,8,3,5,6,7] 解释:[0] 是唯一一个有...

csdn_kou的博客 282

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

改变排序规则。

"大梦三千秋的博客 1136

leetcode -1356 -根据数字二进制下 1 的数目排序 -java版

文章目录题目代码 题目 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1: 输入:arr = [0,1,2,3,4,5,6,7,8] 输出:[0,1,2,4,8,3,5,6,7] 解释:[0] 是唯一一个有 0 个 1 的数。 [1,2,4,8] 都有 1 个 1 。 [3,5,6] 有 2 个 1 。 [7] 有 3 个 1 。 按照 1 的个数排序得到

lingle1的博客 582

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

LeetCode 1356[Python] 根据数字二进制下1的数目排序.1).题目描述2).解题思路&代码 1).题目描述 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1: 输入:arr = [0,1,2,3,4,5,6,7,8] 输出:[0,1,2,4,8,3,5,6,7] 解释:[0] 是唯一一个有 0 个 1 的数。 [1,2,4,8]

qq_41986842的博客 291

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

文章目录题目:1356. 根据数字二进制下 1 的数目排序基本思想: 题目:1356. 根据数字二进制下 1 的数目排序 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1: 输入:arr = [0,1,2,3,4,5,6,7,8] 输出:[0,1,2,4,8,3,5,6,7] 解释:[0] 是唯一一个有 0 个 1 的数。 [1,2,4,8] 都有 1 个

yyf_blog 378
上一篇: 1160 拼写单词
下一篇: 面试题39 数组中出现次数超过一半的数字
UnendingGlory
博客等级 码龄9年 55粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值