Skip to content

Commit 4f6ee0c

Browse files
authored
Update 1246-palindrome-removal.js
1 parent 613f7e1 commit 4f6ee0c

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

1246-palindrome-removal.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,57 @@ const minimumMoves = function (arr) {
3434
}
3535
return dp[0][n - 1]
3636
}
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

Comments
 (0)