File tree 1 file changed +7
-10
lines changed
1 file changed +7
-10
lines changed Original file line number Diff line number Diff line change @@ -109,21 +109,18 @@ \subsubsection{Dynamic Programming, One Pass}
109
109
class Solution {
110
110
public:
111
111
int longestValidParentheses(string s) {
112
- if (s.empty()) return 0;
113
- int* d = new int[s.size()];
114
- d[s.size() - 1] = 0;
112
+ vector<int> f(s.size(), 0);
115
113
int ret = 0;
116
114
for (int i = s.size() - 2; i >= 0; --i) {
117
- int match = i + d[i + 1] + 1;
115
+ int match = i + f[i + 1] + 1;
116
+ // case: "((...))"
118
117
if (s[i] == '(' && match < s.size() && s[match] == ')' ) {
119
- d[i] = d[i + 1] + 2;
120
- if (match + 1 < s.size()) d[i] += d[match + 1];
121
- } else {
122
- d[i] = 0;
118
+ f[i] = f[i + 1] + 2;
119
+ // if a valid sequence exist afterwards "((...))()"
120
+ if (match + 1 < s.size()) f[i] += f[match + 1];
123
121
}
124
- ret = max(ret, d [i]);
122
+ ret = max(ret, f [i]);
125
<
562F
td data-grid-cell-id="diff-247c631550a0bb129293a1194400b49b084602550bd96c706bef5e04edc24be7-125-123-1" data-selected="false" role="gridcell" style="background-color:var(--bgColor-default);text-align:center" tabindex="-1" valign="top" class="focusable-grid-cell diff-line-number position-relative diff-line-number-neutral left-side">123
}
126
- delete[] d;
127
124
return ret;
128
125
}
129
126
};
You can’t perform that action at this time.
0 commit comments