Leetcode Note: Go - Arranging Coins

Arranging Coins - LeetCode
https://leetcode.com/problems/arranging-coins/

  • Go 言語で取り組んだメモ

所感

  • int でコインの枚数 n が渡されるので、これらで starcase を作りたい
  • starcase は k rows で構成されて i 行目には i 枚のコインが存在する
    • starcase の最後の行は未完成になることもある
  • コイン n 枚で完成させることができた行数を int で return する

回答

Arranging Coins - LeetCode
https://leetcode.com/problems/arranging-coins/solution/

func arrangeCoins(n int) int {
    left, right := 0, n
    k, curr := 0, 0

    for left <= right {
        k = left + (right - left) / 2
        curr = k * (k + 1) / 2
        
        if curr == n {
            return k
        }
        
        if n < curr {
            right = k - 1
        } else {
            left = k + 1
        }
    }
    
    return right
}
  • バイナリサーチでの実装