@@ -34,3 +34,57 @@ const minimumMoves = function (arr) {
34
34
}
35
35
return dp [ 0 ] [ n - 1 ]
36
36
}
37
+
38
+ // another
39
+
40
+ /**
41
+ * @param {number[] } arr
42
+ * @return {number }
43
+ */
44
+ const minimumMoves = function ( arr ) {
45
+ const n = arr . length
46
+
47
+ const dp = Array . from ( { length : n } , ( ) => Array ( n ) . fill ( n ) )
48
+
49
+ for ( let i = 0 ; i < n ; i ++ ) dp [ i ] [ i ] = 1
50
+ for ( let i = 0 ; i < n - 1 ; i ++ ) {
51
+ dp [ i ] [ i + 1 ] = arr [ i ] === arr [ i + 1 ] ? 1 : 2
52
+ }
53
+
54
+ for ( let size = 3 ; size <= n ; size ++ ) {
55
+ for ( let i = 0 ; i + size - 1 < n ; i ++ ) {
56
+ const right = i + size - 1
57
+ if ( arr [ i ] === arr [ right ] ) dp [ i ] [ right ] = dp [ i + 1 ] [ right - 1 ]
58
+ for ( let j = i ; j < right ; j ++ ) {
59
+ dp [ i ] [ right ] = Math . min ( dp [ i ] [ right ] , dp [ i ] [ j ] + dp [ j + 1 ] [ right ] )
60
+ }
61
+ }
62
+ }
63
+
64
+ return dp [ 0 ] [ n - 1 ]
65
+ } /**
66
+ * @param {number[] } arr
67
+ * @return {number }
68
+ */
69
+ const minimumMoves = function ( arr ) {
70
+ const n = arr . length
71
+
72
+ const dp = Array . from ( { length : n } , ( ) => Array ( n ) . fill ( n ) )
73
+
74
+ for ( let i = 0 ; i < n ; i ++ ) dp [ i ] [ i ] = 1
75
+ for ( let i = 0 ; i < n - 1 ; i ++ ) {
76
+ dp [ i ] [ i + 1 ] = arr [ i ] === arr [ i + 1 ] ? 1 : 2
77
+ }
78
+
79
+ for ( let size = 3 ; size <= n ; size ++ ) {
80
+ for ( let i = 0 ; i + size - 1 < n ; i ++ ) {
81
+ const right = i + size - 1
82
+ if ( arr [ i ] === arr [ right ] ) dp [ i ] [ right ] = dp [ i + 1 ] [ right - 1 ]
83
+ for ( let j = i ; j < right ; j ++ ) {
84
+ dp [ i ] [ right ] = Math . min ( dp [ i ] [ right ] , dp [ i ] [ j ] + dp [ j + 1 ] [ right ] )
85
+ }
86
+ }
87
+ }
88
+
89
+ return dp [ 0 ] [ n - 1 ]
90
+ }
0 commit comments