算法-计算1的个数及python sort函数的多层排序

该博客介绍了如何计算数字中的1位数个数,并讲解了Python中利用多层排序(key参数和lambda表达式)解决LeetCode问题1356,即根据1的个数和数值大小对整数进行排序。
摘要由CSDN通过智能技术生成


leetcode: 1356. Sort Integers by The Number of 1 Bits

 

1. 计算数字中bit1的个数

在这里,计算1 bit 的个数使用的是 减1再 bit and的方式。

例如 9的二进制表示为   1001:

(1)减1 后为 1000, 1001&1000 = 1000.

(2)1000 减1 后为 0111, 1000&0111 = 0000.

因此9的bit 1 个数为2.

实际上每次减1再and,就消去了原数字二进制表示中一个1。

 

2. python的多层排序

因为题目中除了要求按照 bit1 个数排序外,还要求在“1的个数”相同的情况下,按照数值大小排序。因此就需要2层排序。python中使用sort的key参数,可以自定义排序规则,结合lambda表达式可以实现多层排序。

代码如下

class Solution:
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值