leetcode1356

Posted AsenYang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode1356相关的知识,希望对你有一定的参考价值。

 1 import collections
 2 class Solution:
 3     def countBitOnes(self,num):
 4         count = 0
 5         for i in range(14):
 6             if num & 1 == 1:
 7                 count += 1
 8             num >>= 1
 9         return count
10             
11     def sortByBits(self, arr: List[int]) -> List[int]:
12         dic = collections.OrderedDict()
13         for num in arr:
14             count = self.countBitOnes(num)
15             #print(count)
16             if count not in dic:
17                 dic[count] = [num]
18             else:
19                 dic[count].append(num)
20         result = []
21         sort_dic = sorted(dic.items(),key=lambda d:d[0])
22         # print(sort_dic)
23         for k,v in sort_dic:
24             result += sorted(v)
25         return result

算法思路:位运算。

题目前提条件0 <= arr[i] <= 10^4,因此在countBitOnes()内,可以不用循环32次,只需要循环14次即可,2^14=16384>10000。

以上是关于leetcode1356的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 1356. Sort Integers by The Number of 1 Bits

1356. Sort Integers by The Number of 1 Bits

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

HRBUST1356 Leyni,罗莉和队列 题解报告

什么是错误 mysql (#1356)?

GDUFE ACM-1356