登录后可回复主题
您需要 登录 才可以下载或查看,没有帐号?注册账号
x
【 NO.1 增量元素之间的最大差值】; }/ z+ Y7 X( Z0 p0 h: m r
8 F6 Y: S3 v* [8 u: H9 u; s解题思路
8 q; Q* m, k+ k* W遍历数组维护全局最小值,若当前值较大就是一个合理的答案,遍历过程取最大的合理答案即可。
1 w) I/ j. ?, `0 S8 B
# h# ^9 A& f" M8 {9 p# Z7 _% `代码展示
/ ~% b8 x' b j: Q( C3 r7 _6 `% z/ T) u5 P
public class Solution {
5 u0 \$ G8 e8 o; ^7 u, L public int maximumDifference(int[] nums) {
. R M* H3 x: c1 _ \3 H/ k5 K if (nums == null || nums.length == 0) {5 \- L$ I! U! e+ U
return 0;4 _5 D+ M# b* i5 B4 I5 ^
}
2 @/ w# u C3 g4 F, d8 D) Q6 X: b int res = -1;: x0 V, t7 |0 t1 N& O0 p2 V0 |
int minNum = Integer.MAX_VALUE;7 [* S( ~+ A6 E" F; g- b* g$ v
for (int n : nums) {
6 j0 Z. f& u3 F, B if (n > minNum) {
/ T. P. V) p' `. @% _' j. r. ~ res = Math.max(n - minNum, res);
& I R" U1 E1 O5 o5 ~4 V; F }3 I6 v2 R- L* s8 X+ w& c, r6 Q
minNum = Math.min(minNum, n);' O( j; s* c$ `8 K
}
. P# @* u; v% v# K4 y9 o" Z return res;. ~$ p0 r; a! n5 q- `- R
}
$ G7 v6 x5 z" R) C( w}
5 M& j( `5 y( }- y& M% f' _) E, l0 S
l/ H% c3 J9 U+ r& ]/ P
【 NO.2 网格游戏】
/ e& O, \9 H, q+ T9 b
& N9 y( B' F1 ~解题思路
) T3 C* k2 O3 |9 X/ E1 u5 ?注意到网格只有两行,所以第一个机器人需要选择的实际上就是从哪一列向下。在它确定了向下的那一列之后,第二个机器人要么只能拿到第一行开始部分的分数,要么只能拿到第一行结尾部分的分数。/ {% V6 ?: ]: [: h) f
4 H% N6 P+ X+ ~0 {1 O
代码展示! c( j. B' x5 O! R7 E
0 t# E+ E- H) P, F j7 Opublic class Solution {
; C7 f8 s$ W4 I/ J8 K2 W: U6 n! J0 s. [ public long gridGame(int[][] grid) {7 ?2 q3 k2 w3 Q9 X( m. v
if (grid == null || grid.length == 0 || grid[0].length == 0) {
, k; q; f% W8 E5 I* T( } return 0;
: x; z& t( j j }
$ G8 v% c) s, x& k( y+ a int n = grid[0].length;
$ w1 x8 a% ^+ r, _8 n long left = 0, rihgt = 0;0 ?4 d( k& `# ?! U. A! Z
for (int i = 1; i < n; i++) {8 L4 P- v; o$ r
rihgt += grid[0][i];
4 x- s6 b8 w2 l/ _. E3 i }% h( g) a2 ?5 t* S
long res = rihgt;! g7 q6 f2 k+ K( ^: t0 l- f# L L. o
for (int i = 1; i < n; i++) {
. h, Q( F2 V" ?! M0 | left += grid[1][i - 1];$ n% g8 W. m& c
rihgt -= grid[0][i];. P0 Y( i9 x: Y" Z
res = Math.min(res, Math.max(left, rihgt));- r: a8 A$ v, [" y$ ~
}; I* d0 I, a. Q! e
return res;/ g7 }. K: ]% ]7 y4 ~
}
; H7 ~% I* F x D/ o}4 y* W5 j' f1 ^' M' z# W7 k5 {
1 H* a. V1 R3 E
9 L, |) t. y: Z9 a1 T【 NO.3 判断单词是否能放入填字游戏内】8 G3 ~3 I* B* l& U; z
: R- R5 Y5 z5 g2 D8 P: s9 _
解题思路
9 \- b& l6 w$ o/ K. w$ I模拟题,详情见注释。
- s+ W( A6 Z3 X8 N& f; J3 I8 H i( j. e2 _
代码展示1 |# @/ r6 J; g" c; `
+ o. h& A6 V" B5 a2 Y \+ K: b
public class Solution {- x1 i! r' I/ H* f O8 z. ^2 a3 {9 V
! o; G% T+ K5 g4 x public boolean placeWordInCrossword(char[][] board, String word) {
' N& a! T- f8 s, A( A# C
7 A% S* j3 \4 c' [ if (board == null || board.length == 0 || board[0].length == 0) {
! y" Z8 h$ c- h' m4 G+ @" ?/ ]4 a- M2 ?, o0 s( F5 `
return false;/ ?' D/ h# k7 k" @
8 x$ s x1 g4 K" Z
}
z) M0 j6 D; b9 p: F5 w5 f0 S" y" T2 R* d
int n = board.length;: g( ~7 K1 W) m
1 T4 S5 d' `6 u- q# s3 C$ D
int m = board[0].length;: e6 w/ g4 v% c! ]
1 K/ x5 Z' ?' m
for (int i = 0; i < n; i++) {* ^! b! S [, N0 M$ L( Q. o
1 t- K8 C1 n+ p7 B. V( p
for (int j = 0; j < m; j++) { ^% z- q3 n( ^- |) v/ x9 ]3 A
6 A8 R; y; n1 u0 h // 从 (i, j) 开始,尝试水平地、垂直地放置单词4 J5 Q% j" P# Z: H- X9 ]! J" e8 _
+ j4 S5 Y0 d8 }/ N7 g if (isValid(board, word, j, j + word.length() - 1, i, true) || isValid(board, word, i, i + word.length() - 1, j, false)) {% q; K3 Q K( y, A( [ v
5 H0 S& y; ^1 H6 L& ~
return true;5 _$ N% c; d, z. j; I1 G- d, p. a( X
/ S& `8 w. m' i$ K. e: V+ L
}
" U8 V8 C7 c7 {/ F# p) x5 U! Y$ s! ]" v! ?0 Q* Y- J7 F
}) ^9 |# M& I% w$ D" [# j
! L5 Y+ g( r: a! d
}
$ ]$ u. k' r' Z, c( }# j% V: R0 _# e, V# e( o4 u! T) \" b; G5 |4 K% D
return false;
+ p% L! T) i8 I% ]5 B% W
! B# p0 g, e& f( r2 a @ }
. T# N9 _ [9 v o9 q9 S9 ^. w. i8 C/ }+ @* U
private boolean isValid(char[][] board, String word, int start, int end, int standard, boolean isHorizontal) {, O6 \6 A2 n V Y1 T H
' S$ g; l, f, I. i( M5 I& Q // 水平放置, standard代表行, 固定不动) j% Y4 |0 E9 D# g* d. B
4 l5 ~# \ A# J! x1 t
if (isHorizontal) {; x# s& M' z1 v' ~ Y2 x. ^% X
! H! I3 z7 Q; x% k1 v4 w7 K if (end > board[0].length - 1) {
- B& x7 L/ s% ]
1 Q" Z% b" u# ^ return false;$ ^9 q- e$ w2 l
# n7 G1 p2 Y* \ }
+ V& h4 Q3 f) _5 ^8 t' m1 T6 K, Y9 s- A9 w5 Z0 T
// 如果左边界不越界,检查左边界的元素是否合法3 [2 D7 i5 d5 U6 s" y4 [3 u
, E" K2 M* W( \! k Q if (start - 1 >= 0 && (board[standard][start - 1] == ' ' || Character.isLetter(board[standard][start - 1]))) {
6 M$ Z! E! B( C7 v$ O4 Y3 H' ]6 i0 L# v* f* o
return false;
9 U* X3 I E4 g0 l" v2 }: c2 I( V/ I3 h: v
}7 Z+ q5 u" S8 y: W6 g5 S
5 V. @4 @0 v6 [# S' ]: H
// 如果右边界不越界,检查右边界的元素是否合法/ G; o0 Z+ t0 M- m
7 e# S# F1 y+ m
if (end + 1 < board[0].length && (board[standard][end + 1] == ' ' || Character.isLetter(board[standard][end + 1]))) {+ E1 c) o% B$ l0 N5 x
' j7 F s. S# L) V5 u# B+ r3 `
return false;
: }3 H4 q- e1 }' t/ Y8 q6 D
9 y; x& |1 l0 F }# q1 e* w4 s# G/ X/ Z8 H9 H- ]
. v- c. U- V2 ` Q3 s2 z
// 至此,它的位置已确认是合法的了
9 |; D" v5 J5 w; u( E; c+ u$ W! r1 N4 N C
// 接下来,只需要判断 (standard, start) ~ (standard, end) 这个区间 "是否有障碍'#'
7 W8 e1 {1 H# J, @2 W7 l' b. i. |) }% m; y5 Z" f
// 正反都需要判断
& G+ @: c+ c; S) u% y# Z3 b& L$ a4 u
return check(board, word, start, end, standard, true, false) || check(board, word, start, end, standard, true, true);3 b/ K9 H# T* @" | |- m% ?3 w
# ?" I8 S" \) i1 Y" A+ z, c' X, I }7 K. q3 h6 _ K$ D3 J
. t1 ~2 h% x8 d // 垂直放置,standard 代表列, 固定
* F2 Q9 ^% N& f! W
4 n2 G) u9 ]) f. L8 g( t else {
I( }+ J" q, p l3 h3 M( g0 P; g6 i. H9 h! M! |: I2 [
if (end > board.length - 1) {
% |4 p8 K) [, T1 n6 W$ J: X
) e2 o* y* y- T return false;
( P$ G% s, Z0 H- W; O* {$ C/ N, b
7 W0 f/ l0 d) ^- v" F; S }% j8 k7 J2 f, |9 n9 U
/ l& {$ \8 ]% T
// 如果上边界不越界,检查上边界的元素是否合法- @* H' I2 l6 r' n" Q" e u* g
, B! k- u+ J0 t' u s& I/ i3 q% @
if (start - 1 >= 0 && (board[start - 1][standard] == ' ' || Character.isLetter(board[start - 1][standard]))) {8 [8 {# T/ F4 n/ ]+ U
' E) P( H* z3 n$ X return false;
]) n9 @8 \' c# g, R; b
- B5 h: C+ W) | }3 ?( |* E$ K2 M. r! e3 s# g8 w9 t
0 Z6 i z/ I8 I/ C
// 如果下边界不越界,检查下边界的元素是否合法+ U5 y5 i( C2 p W A) A
A5 _" R% i; S
if (end + 1 < board.length && (board[end + 1][standard] == ' ' || Character.isLetter(board[end + 1][standard]))) {8 A4 L8 R8 @3 ]
" i3 M* ^3 F) e) Y% l7 h. @5 R; z
return false;
. Y: F( R3 L1 Q/ k
1 x g) q9 j+ K8 ~; ?3 I* K }' g: t" @- p( K# C5 T7 a( _
1 q) [' W8 \, v3 N( E" b* G+ d // 至此,它的位置已确认是合法的了
6 x U7 O( L" w7 b2 w( r2 W
. M' D8 c" y H& A6 ^/ x6 G! n3 o7 U // 接下来,只需要判断 (start, standard) ~ (end, standard) 这个区间 "是否有障碍'#'
# T% a% X" t' |, T% _# c
9 |/ C: N$ l9 s7 H // 正反都要判断- u% p3 c+ O+ m' g& }5 b
! G/ Y$ ~1 _) s3 l) Z8 V( x
return check(board, word, start, end, standard, false, false) || check(board, word, start, end, standard, false, true);
# g6 ]6 Y$ K, s; M0 c/ V. \ {! [' r# E5 {( n
}3 m" W5 f8 j' T) R% O, @, T
9 c1 a1 ?+ E/ ~/ H( X5 R% H
}
* V5 o# M2 y) i1 {; L4 x: ~5 E$ a& Z2 ~
private boolean check(char[][] board, String word, int start, int end, int standard, boolean isHorizontal, boolean isReversed) {( e1 |( v$ L0 j ^2 J# Q/ r+ G2 a
$ B+ j3 }. I( Q
if (isHorizontal) {
& V5 \2 E( n* k# _3 X% j+ [: M3 U7 v" Z5 ]! ~) E- e( `- L" i Y
// 正向模拟0 S+ @ h( t& ~( M* @
! x! E' r9 v5 ]" p6 a9 G if (!isReversed) {0 `. R4 l: i' V( l
/ H; k! P* U: _6 ] for (int i = start; i <= end; i++) {
( c+ }0 @' ?( T( y- J5 H2 S: W4 I% i) Q+ e
if (board[standard][i] == '#' || (Character.isLetter(board[standard][i]) && board[standard][i] != word.charAt(i - start))) {& F( k5 Z3 K3 q% r( u6 \
& S+ d! h: p( T
return false;: i2 ^. _% T2 y& N
' U' j! {0 v4 ~1 [0 O
}
% F" C. _4 F! w7 Z* h; v
a: W6 s; g0 I s( ?7 d3 | }) R. O, ^' ]; G$ l# p3 V3 i
1 ~, c+ v0 [6 x9 v1 ^, r6 y }
) v( J4 w b5 V- _3 N* _
' Y I! x- n# n* a- R* _4 x* I // 反向模拟: s6 P l7 w. R e; @
) J( S" q- K: D! j else {
/ Q; V; P, t9 r3 L( i% u0 J. k. F" p" I( K" K
for (int i = end; i >= start; i--) {
% H: E. U+ V$ N. C( e
$ l+ O1 o" J2 G$ V% a( L if (board[standard][i] == '#' || (Character.isLetter(board[standard][i]) && board[standard][i] != word.charAt(end - i))) {/ {6 }9 A7 w3 n6 _0 i( E
3 _- C! O& y& d" U return false;
5 Q, }# C3 L4 _
$ w- o4 q1 f" e. ?$ _6 ^ j5 u }
4 q* r8 i5 z ]& O; N6 ]" q. f) T, Q
}
- Q3 Z8 A+ d$ V$ L& r8 \- K( T0 T! l8 |4 X% Y6 y
}
* A, [- ~9 l8 h) _$ c! P, h2 X* W; B5 F5 ?, n* B
} c. q) E4 R: ~
2 Y! g1 U9 ]# b; Y else {' F4 G6 ^2 y. g
8 b l' G2 s0 x
// 正向模拟8 ^" t( d/ m, W$ I
8 s# d- [3 G# G% a% |1 X' B
if (!isReversed) {* t. M" P4 C5 ^& ^ I+ s
5 A& D& y" r# k7 u6 ]3 C. s
for (int i = start; i <= end; i++) {4 H# o# E: J! i3 N
& [/ t$ B! @& @' m1 X2 M, U( ^ if (board[i][standard] == '#' || (Character.isLetter(board[i][standard]) && board[i][standard] != word.charAt(i - start))) {
: N+ S1 O0 {- Y9 r
4 Y1 B3 |% g) E- ^ return false;
4 r" x2 {# u+ {2 _$ d; P/ ^! E4 A* ~" c( `# t0 j8 u( Q
}5 Z* }: G8 T% [7 b5 O
- v2 g* C2 |2 O; j* a5 `9 q }
! R% z! e' y% X3 L$ i. s% q, j
% J' k/ `9 I1 p+ { }
6 R5 `3 g9 q, b S3 u+ R h
- Z. W3 m1 D7 N' U // 反向模拟: \5 \8 F Y& F+ @$ r
9 j+ [ A0 I/ \$ q+ X) K" I, F' s
else {
5 x- `: K( @8 _ x& r
: K) f) y& M" W for (int i = end; i >= start; i--) {
& }1 h' J4 ^/ |
! ~, F$ ?& j4 j3 O% a2 ~6 } if (board[i][standard] == '#' || (Character.isLetter(board[i][standard]) && board[i][standard] != word.charAt(end - i))) {
0 Q3 T# ?( t( J+ f1 H, @' |1 [# F; A" n3 f& G
return false;
& M1 W1 ]' E/ G) _6 E# ` [5 R' {8 I
}
: a3 J# G7 ]3 J+ ~6 W" o; }4 w$ m, M% k& j$ b4 T" t. C
}
) U' l4 ?; u' P+ M
/ _7 u" k) S8 B+ O. J% f3 [ }) O) T. m+ S" u
4 V9 q2 [2 P O- c! l2 k
}
# h' |& N% F( Y- J, q- e7 q# T3 h, s0 O' K
return true;
# @8 t2 L/ H. O+ j# Q. ~ e: t; @2 W3 `, }& W, Z6 J+ l4 }3 T3 A! d
}9 H) p+ N+ V# Q& v
$ Q0 `3 Q( n. ~5 J; M3 n7 G}
# H( @+ a4 ]! t+ n' {; `+ r% N. h& L# G$ ~6 y
2 k3 b# b0 Y% V7 z; _2 T/ t5 x【 NO.4 解出数学表达式的学生分数】
6 `( i2 ]) R8 w' [7 I2 B6 ^
8 _) t# y- p4 X3 S* ^解题思路
6 C2 N! U$ B- F) D; `6 V) ~/ e8 L5 M) `: W! ^+ ~' J, h
首先理一理总体的思路,我们需要做的事情有:5 Y) y, w' @3 V% m- B2 N% z& P
. r" M, Z- e7 m5 j! s! [ z3 P2 L0 Z: R3 X" e3 ]' w
1. 求出表达式的正确值:Stack的方式解决2 G& f, }( O0 ], m
2. 求出表达式所有可能的值:区间型动态规划解决( c4 Y* ?6 N s( A4 ~. o
3. 计算学生的得分:计分即可
- n! d' f& G' a( C1 U代码展示' W- S. w# p1 s) `6 ?
7 p0 q0 T( T& U3 qpublic int scoreOfStudents(String s, int[] answers) {3 p4 y j; T7 W
4 H' _" w) `" `2 v* n
int[] count = new int[1024];
j, K1 r$ S, ]2 m$ s y. S: e# g, @ |2 }% C
for (int ans : answers) {
. w/ ~5 n' m$ c7 ]4 y4 q; ^6 C' Q( w6 u9 [* @
count[ans]++;6 j+ K) A# c! T5 j
9 z, i6 b/ J+ c& }! U }
& {0 L" C( X- j7 k' w2 d9 u! }2 D3 r% K) Q* D4 ]
Stack<Integer> stack = new Stack<>();! A6 [) m8 c, R5 t- N
5 H1 S" ^4 X. A" [
stack.push(s.charAt(0) - '0');" o, G: J* {( U
% b( M6 d$ M @8 l! q5 F
for (int i = 1; i < s.length(); i += 2) {
( B! v; N0 J, q6 a; L& l$ }
0 V& a0 j( J" k' b- x // 加法暂时不做,存在栈顶# H7 c! y* Y, Z2 U8 t7 `! M
6 T$ s% _) h) O* \ i
if (s.charAt(i) == '+') {) u/ z3 n! m9 Z# f# I W) b3 B; u- x" p
; W7 C/ H m' E' C stack.push(s.charAt(i + 1) - '0');
7 ?" Q. j! e4 ~# i& u6 ^; x' U4 R- W' y
}5 v6 o1 H1 n: d; j r& Y
/ [) n, i' i' p* }! w0 U- Y // 乘法直接运算
. ?5 `. Z; Q) U. |6 o1 D( B* m5 z
# \% D B# }5 G9 {0 g/ ~9 ?& ~- O else {
* y4 T5 P, u$ N
: ]) L" Q9 C* E* o: o* M2 g: ]8 w stack.push(stack.pop() * (s.charAt(i + 1) - '0'));
- Z. s8 l8 b; k, r* C
! Z- Q9 O* M! a$ I& w' k }
E& x' |0 f0 U+ e$ S4 n7 |. x/ f/ T
}. U' |/ A& A$ S( W9 Z$ }
z9 O( [9 W/ a. ^9 F
int rihgtAns = 0;' q& l, C$ S* t0 X
3 D1 G8 C3 i) |
while (stack.size() > 0) {
3 {$ R! T5 R3 l$ J, \3 r8 J1 P1 E
7 C x0 `) A. | rihgtAns += stack.pop();' Z$ i/ a4 f" _$ T; l# i7 S- O8 l
9 Y6 ^8 d7 v8 X9 m
}
2 X7 f' k1 E( e# h% ]0 @7 V2 \9 k9 D1 h+ c
// 计算正确的人数积分& V( B3 ]/ y3 E+ h
2 j- H5 {0 q f1 E' ~ int res = count[rihgtAns] * 5;
: ]* ?0 G& A' r, h$ C3 q* L" l& V. g( K; }. h
: L, m8 X& v% M0 v2 u1 L
7 `2 N9 v- o o. N, P& `& M // 枚举所有可能的计算结果
; c1 _! M4 ?1 a5 N2 ^% |
& ?9 s6 Y3 V4 c6 |8 f( w3 i int n = s.length();
; V2 W2 p( P& @7 {" J8 k& N, ?+ }
: Y5 _% ]( G) O' P" O* p( m Set<Integer>[][] dp = new Set[n + 2][n + 2];# G9 `3 V2 r! v5 U3 P* D4 e9 k
; l: C4 ~" Q I( c( v) g for (int i = 0; i < n + 2; i++) {
0 d+ `1 n' Q: D) q7 A3 u- p, V% K+ z
for (int j = 0; j < n + 2; j++) {
4 y3 K' m) }3 ^ e$ X1 V8 p. N1 E2 d1 v8 m5 T) v, q. u
dp[i][j] = new HashSet<>();/ x4 P+ w' ^- \ @4 I
: _. a' w8 ` r- W" {
}- v9 r. G5 }$ m! E
; S- o" V. |. b) B
}/ g" V' U: [3 X- b/ C# j
( W% X1 d! p0 _: F4 d
for (int j = 0; j < n; j += 2) {! T0 [9 u; B2 X, K3 b: _
6 W8 x/ @) y) q/ A* H
dp[j][j].add(s.charAt(j) - '0');! U( P; `3 U) K& _2 h9 d8 J; Q( U4 @
$ e0 I' w- O* Q- r. J( X5 m' v }* }/ b4 w" j9 l. r
' O( z& h2 i% f7 o // 区间型动态规划9 x" m' a; Y( G: ~9 o
! p8 W5 z" P* P' R for (int len = 2; len < n; len++) {% @8 S! Y3 P8 |" Y
8 s1 N# v: t' y" [! B! W$ P7 I9 V! u
// 左端点 i1 F8 z1 _! y* v& t d
# k: u3 e: j) ], B; h$ g2 N for (int i = 0; i + len < n; i += 2) {3 ]+ X2 Q/ t+ O9 R
v5 b5 O; ]" u
// 枚举左半部分的长度
+ I! g r4 p- a7 w- d/ E- }. F) U* b* z
for (int leftLen = 0; leftLen < len; leftLen += 2) {
. b; M; |: F. X7 {* ], i4 J! L3 T( g4 N" _3 e& X
// left 表示左半部分的值. M; _* L4 {" u/ P! Z
( {3 {( Q; O; E! q // right 表示右半部分的值$ f* a& ]/ a/ f" V9 ?
, ?0 `: P* T( c1 p& d( j for (int left : dp[i][i + leftLen]) {
% v- A, L( N% U; \' n- o, S. R9 n: G; U9 N: T
for (int right : dp[i + leftLen + 2][i + len]) {' p) q% k/ }; {" y1 i) D3 c; k
: r) ] ?$ `# z( K7 c3 z9 M if (s.charAt(i + leftLen + 1) == '+') {
( `9 z8 k+ u$ r( V7 P/ J
M, \3 P+ x: a @" N% ], j# a if (left + right <= 1000) {
# H3 Z; t# U. {& U% u
. A% Z: P' d5 A ` dp[i][i + len].add(left + right);
+ D% _2 A( e9 g+ W! v3 f! C
$ \" g1 l: M- [+ |' {3 l6 y }
! u) U: j( }2 l
: y4 {" Z2 \9 ?' { } else {0 {* ~5 b$ P. n, d# U4 w0 f
, H& b$ r1 J- {1 ^6 D7 u9 ?
if (left * right <= 1000) {
. @ S- a- s2 ?3 g. B
; w( C6 \1 P& r& p dp[i][i + len].add(left * right);
! F7 [. P5 F8 q! A h5 l- ^3 C/ G
}" R/ k( \ ?; s& d o8 a# I
( @% T! B1 M/ a2 [
}
z, @/ l |7 Y- p0 p
4 i! q- F2 o( K" ^# O6 j }
* y, g* k5 \' I# H% \
! v6 ^$ e% \2 J) ^, Q& S }
v3 v ?$ b% `
" |$ f- p: m, Q }
8 I7 E# W$ `" p7 a3 e3 F4 {( y- t$ O B' i$ k1 Y/ h l8 J
}
' x6 a9 u k' K' k2 O6 ?! A' D) a' \& A
}! z5 [% p+ h2 O6 \" k' f
# e/ u: @) {1 e( o8 B/ o
# K9 K( |4 Z5 k+ {5 H3 T6 S/ I5 l, |1 Y4 I
for (int points : dp[0][n - 1]) {2 d% J; J+ Z3 m: ?# W
$ f& T3 {1 g$ M" D6 J, Y
if (points != rihgtAns) {
" Y$ \/ q, v" }' O2 _+ H0 r, H2 n% g/ q' n
res += 2 * count[points];" n/ D0 w8 R' }. m# L5 c0 G! ^6 x
3 m, ~6 _; q5 S# F4 \- H }3 B* n: U0 X9 V7 M: G
9 B! T; i/ {' i8 i0 a4 ] }$ e- T2 Q$ H, F9 @! B1 b
" x1 D O! A8 U- a: l+ D
return res;4 ?4 a8 J$ P; f' d
" v. O/ V- s" t/ P5 c( q% P } |