File tree Expand file tree Collapse file tree 1 file changed +63
-0
lines changed Expand file tree Collapse file tree 1 file changed +63
-0
lines changed Original file line number Diff line number Diff line change
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
+ * Time O(log(n)) | Space O(1)
25
+ * @param {number } n
26
+ * @return {number }
27
+ */
28
+ var arrangeCoins = function ( n ) {
29
+
30
+ let left = 1 ;
31
+ let right = n ;
32
+ let result = 0 ;
33
+
34
+ while ( left <= right ) {
35
+
36
+ const mid = Math . floor ( ( right + left ) / 2 ) ;
37
+ const total = ( 1 + mid ) * ( mid / 2 ) ;
38
+ if ( n < total ) {
39
+ right = mid - 1 ;
40
+ } else {
41
+ left = mid + 1 ;
42
+ result = Math . max ( result , mid ) ;
43
+ }
44
+ }
45
+
46
+ return result ;
47
+ } ;
48
+
49
+ /**
50
+ * Math
51
+ * Time O(1) | Space O(1)
52
+ * @param {number } n
53
+ * @return {number }
54
+ */
55
+ var arrangeCoins = function ( n ) {
56
+ let discriminant = 1 + 8 * n ;
57
+ let sqrtDiscriminant = Math . sqrt ( discriminant ) ;
58
+
59
+ let result1 = Math . floor ( ( - 1 + sqrtDiscriminant ) / 2 ) ;
60
+ let result2 = Math . floor ( ( - 1 - sqrtDiscriminant ) / 2 ) ;
61
+
62
+ return Math . max ( result1 , result2 ) ;
63
+ } ;
You can’t perform that action at this time.
0 commit comments