LeetCode 869 重新排序得到 2 的冪

2021-09-12 17:55:28 字數 909 閱讀 3994

#!/usr/bin/python3

# -*- coding: utf-8 -*-

# @time: 2019/3/16

# @author: xfli

# the file...

"""問題分析:

方法1:

(1)求出這個數字重新排列的所有組合,python中可以使用itertools.permutations()函式實現,也可以用回溯法求

解。(2)把(1)得到的所有組合,轉換成2進製形式,並檢視其中1的個數,如果1的個數為1,那個這二進位制數對應的十

進製數一定為2的冪。

(3)所有排列組合中只要有1個合格就可以返回true。

方法2:

方法1 的複雜度應該高一點,現在介紹另外一種方法,那麼現在想想,2的次方數,也就2^0,2^1,2^2.......2^30,

共31個,只要把這31個數字,對應10進製求出來,然後對每一位上的數字進行統計,如果統計結果,與被驗證的數

字統計結果與其中的乙個相同,那麼這個被驗證的數字一定可以組合成2的冪。(統計數字可以換成排序,同樣可以

求得解)

"""import collections

def reorderedpower(n):

count = collections.counter(str(n))

for i in range(31):

if count == collections.counter(str(1 << i)):

return true

return false

if __name__ == '__main__':

n = 46

result = reorderedpower(n)

print(result)

leetcode869 重新排序得到2的冪

從正整數n開始,我們按任何順序 包括原始順序 將數字重新排序,注意其前導數字不能為零。如果我們可以通過上述方式得到 2 的冪,返回true 否則,返回false。示例 1 輸入 1輸出 true示例 2 輸入 10輸出 false示例 3 輸入 16輸出 true示例 4 輸入 24輸出 false...

2019,重新啟航

這是2019年的深夜,這幾天總是想為自己的2019年立一些flag,想做的太多,也總是半途而廢。2018年發生了很多很多很多事情,感覺自己還沒有過2018年,就結束了。其實早點結束也好,讓不好的事情早點過去。每週對一本書,寫乙個讀後感吧。盡可能多的更新 通過123讓自己和大家一起讀書吧。健康 多鍛鍊...

leetcode 1470 重新排列陣列

1470.重新排列陣列 給你乙個陣列 nums 陣列中有 2n 個元素,按 x1,x2,xn,y1,y2,yn 的格式排列。請你將陣列按 x1,y1,x2,y2,xn,yn 格式重新排列,返回重排後的陣列。示例 輸入 nums 2,5,1,3,4,7 n 3 輸出 2,3,5,4,1,7 解釋 由於...