Skip to content

Commit 3e071f7

Browse files
authored
Create 0441-arranging-coins.js
Solved 0441-arranging-coins.js in JS.
1 parent 794f343 commit 3e071f7

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

Diff for: javascript/0441-arranging-coins.js

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/**
2+
* https://leetcode.com/problems/arranging-coins/
3+
* Linear time
4+
* Time O(n) | Space O(1)
5+
* @param {number} n
6+
* @return {number}
7+
*/
8+
var arrangeCoins = function(n) {
9+
10+
let steps = 1;
11+
let canBuild = 0;
12+
13+
while(n >= steps) {
14+
n = n - steps;
15+
canBuild++;
16+
steps++;
17+
}
18+
19+
return canBuild || 1;
20+
};
21+
22+
/**
23+
* Binary Search
24+
*
25+
* Time O(n*log(n)) | Space O
26+
* @param {number} n
27+
* @return {number}
28+
*/
29+
var arrangeCoins = function(n) {
30+
31+
let left = 1;
32+
let right = n;
33+
let result = 0;
34+
35+
while(left <= right) {
36+
37+
const mid = Math.floor((right+left)/2);
38+
const total = (1 + mid) * (mid/2);
39+
if(n < total) {
40+
right = mid -1;
41+
} else {
42+
left = mid+1;
43+
result = Math.max(result, mid);
44+
}
45+
}
46+
47+
return result;
48+
};
49+
50+
/**
51+
* Math
52+
* Time O(1) | Space O(1)
53+
* @param {number} n
54+
* @return {number}
55+
*/
56+
var arrangeCoins = function(n) {
57+
58+
let result1 = Math.floor((-1 + Math.sqrt(1+(8*n)))/2);
59+
let result2 = Math.floor((-1 - Math.sqrt(1+(8*n)))/2);
60+
61+
return Math.max(result1, result2);
62+
};

0 commit comments

Comments
 (0)