#!/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 解釋 由於...