LeetCode-441-排列硬幣

題目描述:你總共有 n 枚硬幣,你需要將它們擺成一個階梯形狀,第 k 行就必須正好有 k 枚硬幣。
給定一個數(shù)字 n,找出可形成完整階梯行的總行數(shù)。
n 是一個非負整數(shù),并且在32位有符號整型的范圍內(nèi)。
來源:力扣(LeetCode) ??
鏈接:https://leetcode-cn.com/problems/arranging-coins/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
解法一:窮舉法
簡單的累加,直到大于n為止,最后返回相應(yīng)的層數(shù)。這種方法效率太低,n很大時會超時。
解法二:二分查找法
首先,上下限low和high分別是最大和最小的層數(shù),最大值根據(jù)
n = x * (x + 1) / 2
估算得到,然后利用二分查找法找到最多可以放到第幾層,最后返回層數(shù)即可。
【每日寄語】 凡事若等明天做,機遇便從眼前過。
標簽: