File tree 1 file changed +11
-36
lines changed
scripts/algorithms/M/Minimum Number of Operations to Reinitialize a Permutation
1 file changed +11
-36
lines changed Original file line number Diff line number Diff line change 1
- * @param { number } n
2
- * @return { number}
3
- * /
4
- var reinitializePermutation = function ( n ) {
5
- if ( n < 2 ) return 0 ;
6
- let prem = [ ] ;
7
- let count = 0 ;
8
- for ( var i = 0 ; i < n ; i ++ ) {
9
- prem [ i ] = i ;
10
- }
11
- let newArr = [ ] ;
12
- newArr = helper ( prem , newArr ) ;
13
-
14
- const equals = ( a , b ) => JSON . stringify ( a ) === JSON . stringify ( b ) ;
1
+ // Runtime: 57 ms (Top 54.55%) | Memory: 41.60 MB (Top 90.91%)
15
2
16
- if ( equals ( prem , newArr ) ) {
17
- count ++ ;
18
- return count ;
19
- } else {
20
- while ( ! equals ( prem , newArr ) ) {
21
- count ++ ;
22
- let temp = newArr ;
23
- newArr = [ ] ;
24
- newArr = helper ( temp , newArr ) ;
25
- }
26
- }
27
- return count + 1 ;
28
- } ;
3
+ var reinitializePermutation = function ( n ) {
4
+ const BASE_INDEX = 1 ;
5
+ let result = 1 ;
6
+ let index = n / 2 + ( BASE_INDEX - 1 ) / 2 ;
29
7
30
- var helper = function ( prem , arr ) {
31
- let n = prem . length ;
32
- for ( var i = 0 ; i < n ; i ++ ) {
33
- if ( i % 2 == 0 ) {
34
- arr [ i ] = prem [ i / 2 ] ;
35
- } else {
36
- arr [ i ] = prem [ n / 2 + ( i - 1 ) / 2 ] ;
8
+ while ( index !== BASE_INDEX ) {
9
+ index = index % 2
10
+ ? n / 2 + ( index - 1 ) / 2
11
+ : index / 2 ;
12
+ result += 1 ;
37
13
}
38
- }
39
- return arr ;
14
+ return result ;
40
15
} ;
You can’t perform that action at this time.
0 commit comments