441. Arranging Coins
선택한 UI 언어에 맞게 문제 텍스트를 러시아어에서 번역합니다. 코드는 변경하지 않습니다.
У вас есть 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 표시됨.
아직 활성 채용이 없습니다.