1. 程式人生 > 其它 >力扣刷題筆記:869.重新排序得到 2 的冪(字典Counter妙用,牛逼壞了、完整題解程式碼及註釋)

力扣刷題筆記:869.重新排序得到 2 的冪(字典Counter妙用,牛逼壞了、完整題解程式碼及註釋)

技術標籤:刷題筆記leetcodepython

題目:

869、重新排序得到 2 的冪
給定正整數 N ,我們按任何順序(包括原始順序)將數字重新排序,注意其前導數字不能為零。

如果我們可以通過上述方式得到 2 的冪,返回 true;否則,返回 false。

示例 1:

輸入:1
輸出:true

示例 2:

輸入:10
輸出:false

示例 3:

輸入:16
輸出:true

示例 4:

輸入:24
輸出:false

示例 5:

輸入:46
輸出:true

提示:

1 <= N <= 10^9

題解思路:

1、將10 ^ 9 範圍內2的冪全部列表出來組成一個列表,也就32個,即2 ^ 32 。

2、將1的列表使用collection.Counter()統計組成每個元素的字典值,如64為"6":1, “4”: 1 。
3、再使用collection.Counter()將輸入值N拆成相同的形式。
4、最後判斷3的字典是否在2之中,是則為2的冪。
在這裡插入圖片描述

題解python程式碼:

class Solution:
    def reorderedPowerOf2(self, N: int) -> bool:
        all2power=[(2**i) for i in range(32)]
        all2powercount=[collections.
Counter(str(i)) for i in all2power] # print(all2powercount, "\n") ncount=collections.Counter(str(N)) # print(ncount) return ncount in all2powercount

輸入為564時,print輸出為:
在這裡插入圖片描述

作者:yikeshu1415926
連結:https://leetcode-cn.com/problems/reordered-power-of-2/solution/zhong-xin-pai-xu-de-dao-2-de-mi-by-yikeshu1415926/


來源:力扣(LeetCode)https://leetcode-cn.com/problems/reordered-power-of-2/