LeetCode441 排列硬幣(二分查詢)

2021-10-09 02:34:05 字數 1174 閱讀 7890

1、你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。

2、給定乙個數字 n,找出可形成完整階梯行的總行數。

3、n 是乙個非負整數,並且在32位有符號整型的範圍內。

方法一:

複雜度分析:

時間複雜度:o(n)

空間複雜度:o(1)

/**

* 你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。

* 給定乙個數字 n,找出可形成完整階梯行的總行數。

* @param n

* @return

*/public

intarrangecoins

(int n)

//n小於該行應有的個數則停止

int i=1;

while

(n>=i)

return i-1;

}

方法二:二分查詢:複雜度分析:

時間複雜度:o(logn)

空間複雜度:o(1)

* 你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。

* 給定乙個數字 n,找出可形成完整階梯行的總行數。

* 二分查詢法

* @param n

* @return

*/public

intarrangecoins

(int n)

else

if(n > cost)

else

}return high;

}方法三:公式法:複雜度分析

時間複雜度:o(1)

空間複雜度:o(1)

public

intarrangecoins

(int n)

LeetCode 441 排列硬幣

你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。給定乙個數字 n,找出可形成完整階梯行的總行數。n 是乙個非負整數,並且在32位有符號整型的範圍內。執行用時 36ms 記憶體消耗 14mb 題後反思 這個時候就看出數學的用處了,一句話就可以代替注釋中的全部內容...

LeetCode 441 排列硬幣

你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。給定乙個數字 n,找出可形成完整階梯行的總行數。n 是乙個非負整數,並且在32位有符號整型的範圍內。示例 1 n 5 硬幣可排列成以下幾行 因為第三行不完整,所以返回2.示例 2 n 8 硬幣可排列成以下幾行 因...

leetcode 441 排列硬幣(數學)

排列硬幣 category difficulty likes dislikes algorithms easy 39.48 42 br companies unknown 你總共有 n 枚硬幣,你需要將它們擺成乙個階梯形狀,第 k 行就必須正好有 k 枚硬幣。給定乙個數字 n,找出可形成完整階梯行的...