File tree 1 file changed +62
-0
lines changed
1 file changed +62
-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
+ *
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
+ } ;
You can’t perform that action at this time.
0 commit comments