441. Arranging Coins

LeetCode easy original: C# #csharp #easy #leetcode #math
题目文本会按所选界面语言从俄语翻译;代码保持不变。

У вас есть n монет, и вы хотите построить лестницу из этих монет. Лестница состоит из k рядов, где i-й ряд содержит ровно i монет. Последний ряд лестницы может быть неполным.

given 整数 n, return количество полных рядов лестницы, которые вы сможете построить.

示例:

Input: n = 5

Output: 2

Explanation: Because the 3rd row is incomplete, we return 2.

C# 解法

匹配/原始
public class Solution {
    public int ArrangeCoins(int n) {
        return (int)(Math.Sqrt(2 * (long)n + 0.25) - 0.5);
    }
}

C++ 解法

自动草稿,提交前请检查
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public int ArrangeCoins(int n) {
        return (int)(Math.Sqrt(2 * (long)n + 0.25) - 0.5);
    }
}

Java 解法

匹配/原始
class Solution {
    public int arrangeCoins(int n) {
        return (int)(Math.sqrt(2 * (long)n + 0.25) - 0.5);
    }
}

JavaScript 解法

匹配/原始
var arrangeCoins = function(n) {
    return Math.floor(Math.sqrt(2 * n + 0.25) - 0.5);
};

Python 解法

匹配/原始
class Solution:
    def arrangeCoins(self, n: int) -> int:
        return int((2 * n + 0.25)**0.5 - 0.5)

Go 解法

匹配/原始
import "math"

func arrangeCoins(n int) int {
    return int(math.Sqrt(float64(2 * n) + 0.25) - 0.5)
}

Algorithm

Если мы глубже посмотрим на формулу задачи, мы можем решить её с помощью математики, без использования итераций.

Напомним, что 题意 задачи можно выразить следующим образом: k(k + 1) ≤ 2N.

Это можно решить методом выделения полного квадрата, (k + 1/2)² - 1/4 ≤ 2N. Что приводит к следующему ответу: k = [sqrt(2N + 1/4) - 1/2].

😎

Vacancies for this task

活跃职位 with overlapping task tags are 已显示.

所有职位
目前还没有活跃职位。