Skip to content

[pull] main from doocs:main #489

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 225 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
225 commits
Select commit Hold shift + click to select a range
8c8d9c6
chore: update workflow
acbin Apr 25, 2025
c86e351
chore: update deploy.yml
acbin Apr 26, 2025
a6cf378
chore: update deploy workflow
acbin Apr 26, 2025
4f47587
chore: update workflows
acbin Apr 26, 2025
3aad112
chore: update .gitignore
acbin Apr 26, 2025
7fc7b5c
feat: update solutions to lc problem: No.2444 (#4373)
yanglbme Apr 26, 2025
089e43d
chore: update deploy workflow
yanglbme Apr 26, 2025
7db519a
chore: update workflows
yanglbme Apr 26, 2025
186aa5e
feat: add rust solution to lc problem: No.3392 (#4375)
yanglbme Apr 26, 2025
303a9cc
docs: add deepwiki badge (#4376)
thinkasany Apr 27, 2025
6823f28
feat: add rust solution to lc problem: No.2300 (#4377)
yanglbme Apr 27, 2025
7ccaed7
chore: auto update starcharts
idoocs Apr 29, 2025
43b825f
feat: add solutions to lc problem: No.1295 (#4378)
yanglbme Apr 29, 2025
7fb7d02
feat: add new lc problems (#4379)
yanglbme Apr 30, 2025
7d76370
feat: add solutions to lc problem: No.3528 (#4380)
yanglbme Apr 30, 2025
39eaf17
feat: add solutions to lc problem: No.3527 (#4381)
yanglbme May 1, 2025
562547b
feat: add solutions to lc problem: No.2071 (#4382)
yanglbme May 1, 2025
bed93c3
feat: add solutions to lc problem: No.0838 (#4383)
yanglbme May 2, 2025
1bf0fe3
feat: add solutions to lc problem: No.1007 (#4384)
yanglbme May 2, 2025
9877046
feat: add solutions to lc problem: No.1128 (#4386)
yanglbme May 3, 2025
c75bdf1
feat: add solutions to lc problem: No.3531 (#4387)
yanglbme May 4, 2025
2868b7d
feat: add solutions to lc problem: No.3532 (#4388)
yanglbme May 4, 2025
7cfd1f3
feat: add solutions to lc problem: No.0790 (#4389)
yanglbme May 4, 2025
c34a0d2
feat: add weekly contest 448 (#4390)
yanglbme May 5, 2025
b124017
fix: update solutions to lc problems: No.3341,3342 (#4391)
yanglbme May 6, 2025
15dd23d
chore: auto update starcharts
idoocs May 11, 2025
3f5067f
feat: add new lc problems (#4399)
yanglbme May 12, 2025
6fdcc26
feat: add solutions to lc problem: No.3541 (#4400)
yanglbme May 12, 2025
c85ac1d
feat: add solutions to lc problem: No.4545 (#4401)
yanglbme May 12, 2025
356cd7b
feat: add solutions to lc problem: No.3546 (#4402)
yanglbme May 12, 2025
170fd23
feat: add solutions to lc problem: No.3335 (#4404)
yanglbme May 13, 2025
ab51502
feat: add solutions to lc problem: No.3337 (#4405)
yanglbme May 13, 2025
b6b8817
feat: add solutions to lc problem: No.3337 (#4406)
yanglbme May 14, 2025
52f89c8
feat: update solutions to lc problems: No.2900,2901 (#4408)
yanglbme May 14, 2025
99a394b
feat: add solutions to lc problem: No.1477 (#4409)
yanglbme May 17, 2025
29ee80c
feat: update lc problems (#4410)
yanglbme May 18, 2025
a3979f7
feat: add solutions to lc problems: No.3550,3551 (#4411)
yanglbme May 18, 2025
8ec2624
feat: add solutions to lc problem: No.3552 (#4412)
yanglbme May 18, 2025
070dbb6
feat: add solutions to lc problem: No.3356 (#4413)
yanglbme May 19, 2025
49fea5c
feat: add rust solution to lc problem: No.0581 (#4414)
yanglbme May 20, 2025
81ba6c0
chore: add new lc problems (#4416)
yanglbme May 20, 2025
741bea8
feat: add solutions to lc problem: No.3555 (#4417)
yanglbme May 20, 2025
ffca226
feat: add solutions to lc problem: No.3554 (#4418)
yanglbme May 20, 2025
9dbf88f
feat: add solutions to lc problem: No.2009 (#4419)
yanglbme May 20, 2025
0482811
feat: add solutions to lc problems: No.2357,2358 (#4420)
yanglbme May 21, 2025
51a192d
feat: add solutions to lc problem: No.3362 (#4421)
yanglbme May 22, 2025
bd0eb2c
feat: update solutions to lc problem: No.3362
yanglbme May 22, 2025
9eb9ca9
feat: add c solution to lc problem: No.0001 (#4422)
pranjal030404 May 22, 2025
4217576
feat: add solutions to lc problem: No.2359 (#4423)
yanglbme May 23, 2025
6085f2f
feat: add solutions to lc problem: No.2942 (#4424)
yanglbme May 23, 2025
853735d
feat: add c solution to lc problem: No.0002 (#4426)
pranjal030404 May 23, 2025
7381ede
feat: add solutions to lc problem: No.2131 (#4428)
yanglbme May 25, 2025
6bbb968
feat: add new lc problems (#4429)
yanglbme May 25, 2025
b890898
feat: add solutions to lc problem: No.3556 (#4430)
yanglbme May 25, 2025
e188f51
feat: add weekly contest 451 (#4431)
yanglbme May 25, 2025
ec22c87
feat: add solutions to lc problem: No.1857 (#4432)
yanglbme May 25, 2025
3e3d06c
feat: add solutions to lc problem: No.0245 (#4433)
yanglbme May 25, 2025
b2a6267
feat: add c solutions to lc problems: No.0003,0004 (#4427)
pranjal030404 May 26, 2025
b5a542b
fix: resolve memory leak issue in No.0002 (#4434)
gaganxsaini May 26, 2025
1ebe39f
feat: add solutions to lc problem: No.2966 (#4435)
yanglbme May 26, 2025
40f3d8b
feat: add solutions to lc problem: No.3403 (#4436)
yanglbme May 26, 2025
afa39bd
feat: update lc problems (#4438)
yanglbme May 26, 2025
185c94f
feat: add solutions to lc problem: No.3565 (#4439)
yanglbme May 27, 2025
ce35926
feat: add solutions to lc problem: No.0147 (#4437)
taoyq1988 May 27, 2025
aca2202
chore: auto compress images (#4440)
github-actions[bot] May 27, 2025
8e777ff
feat: add solutions to lc problem: No.0269 (#4441)
taoyq1988 May 27, 2025
352832e
feat: add solutions to lc problem: No.3560 (#4443)
yanglbme May 27, 2025
30d02ab
feat: add solutions to lc problem: No.3561 (#4444)
yanglbme May 27, 2025
7c2ed94
feat: add rust solutions to lc problems: No.3372,3373 (#4445)
yanglbme May 27, 2025
8aca291
feat: add cpp solution to lc problem No.0008 (#4442)
gaganxsaini May 27, 2025
6ae2c07
chore: auto update starcharts
idoocs May 28, 2025
dd076f7
chore: add missing image (#4447)
yanglbme May 28, 2025
18565c4
feat: add solutions to lc problem: No.1061 (#4448)
yanglbme May 28, 2025
c7a3051
feat: update lc problems (#4449)
yanglbme May 28, 2025
3ddd4aa
feat: add solutions to lc problem: No.2359 (#4450)
yanglbme May 29, 2025
c6b4e43
feat: add solutions to lc problem: No.0909 (#4451)
yanglbme May 31, 2025
8c4bba2
feat: add solutions to lc problem: No.2929 (#4452)
yanglbme Jun 1, 2025
15f7077
feat: add new lc problems (#4453)
yanglbme Jun 2, 2025
90f55e9
feat: add solutions to lc problems: No.3566,3567 (#4454)
yanglbme Jun 2, 2025
befa1c5
feat: add solutions to lc problem: No.3568 (#4455)
yanglbme Jun 2, 2025
9716c9c
feat: add rust solution to lc problem: No.135 (#4456)
yanglbme Jun 2, 2025
13ca332
feat: add solutions to lc problem: No.1298 (#4457)
yanglbme Jun 2, 2025
490508b
feat: update lc problems (#4459)
yanglbme Jun 3, 2025
297e28c
feat: add solutions to lc problem: No.2616 (#4460)
yanglbme Jun 3, 2025
c520c5a
feat: add solutions to lc problem: No.3406 (#4461)
yanglbme Jun 4, 2025
6558818
feat: add solutions to lc problem: No.1061 (#4462)
yanglbme Jun 4, 2025
2e938eb
feat: add solutions to lc problem: No.3442 (#4463)
yanglbme Jun 4, 2025
58a5c21
feat: add solutions to lc problem: No.3405 (#4464)
yanglbme Jun 5, 2025
a774cc7
feat: add solutions to lc problem: No.2434 (#4465)
yanglbme Jun 5, 2025
ba46ac8
feat: add solutions to lc problem: No.3170 (#4466)
yanglbme Jun 7, 2025
078c02d
feat: add new lc problems (#4467)
yanglbme Jun 8, 2025
f5db36b
feat: add solutions to lc problem: No.3573 (#4468)
yanglbme Jun 8, 2025
26b007e
feat: add solutions to lc problem: No.0440 (#4469)
yanglbme Jun 8, 2025
82583d6
feat: add solutions to lc problem: No.3576 (#4470)
yanglbme Jun 9, 2025
57362c1
feat: update lc problems (#4471)
yanglbme Jun 9, 2025
ec0dc28
chore: update problems (#4472)
yanglbme Jun 9, 2025
76a5f03
feat: add c solutions to lc problems: No.0005,0006 (#4458)
pranjal030404 Jun 9, 2025
ccd5497
feat: update solution to lc problem: No.3580 (#4473)
yanglbme Jun 9, 2025
8f9449a
feat: add solutions to lc problem: No.3578 (#4475)
yanglbme Jun 10, 2025
24da320
chore(deps): bump requests from 2.32.0 to 2.32.4 (#4474)
dependabot[bot] Jun 10, 2025
363aafd
feat: add solutions to lc problem: No.3445 (#4476)
yanglbme Jun 11, 2025
a0a5cb7
feat: update lc problems (#4477)
yanglbme Jun 11, 2025
e26e506
feat: update solutions to lc problem: No.0006 (#4478)
yanglbme Jun 11, 2025
4aaa775
docs: add support us section
yanglbme Jun 11, 2025
f352441
chore: auto compress images (#4479)
github-actions[bot] Jun 11, 2025
2f33e2a
docs: update readme guideline (#4480)
yanglbme Jun 11, 2025
dc357fd
feat: add solutions to lc problem: No.3579 (#4481)
yanglbme Jun 11, 2025
22c6a2b
chore: auto update starcharts
idoocs Jun 11, 2025
e51cd08
feat: add rust solution to lc problem: No.3579 (#4482)
yanglbme Jun 11, 2025
128977c
feat: add solutions to lc problem: No.3423 (#4483)
yanglbme Jun 11, 2025
102ce22
feat: add rust solutions to lc problems: No.3573,3577,3578 (#4484)
yanglbme Jun 12, 2025
a1a4b07
feat: add solutions to lc problem: No.3574 (#4486)
yanglbme Jun 12, 2025
2d63f55
feat: add solutions to lc problem: No.0281 (#4485)
taoyq1988 Jun 12, 2025
2976139
feat: add solutions to lc problem: No.2040 (#4487)
yanglbme Jun 12, 2025
80d9354
feat: add solutions to lc problem: No.3424 (#4488)
yanglbme Jun 12, 2025
6cf042d
feat: add solutions to lc problem: No.2616 (#4489)
yanglbme Jun 12, 2025
370d053
feat: add solutions to lc problem: No.2614 (#4490)
yanglbme Jun 12, 2025
0c33e0b
feat: add solutions to lc problem: No.2566 (#4492)
yanglbme Jun 14, 2025
40ca1e8
fix: correct case-sensitivity issue in lc problem No.1517 (#4495)
yanglbme Jun 15, 2025
cc5ff74
feat: add solutions to lc problem: No.1432 (#4496)
yanglbme Jun 15, 2025
add0319
feat: add solutions to lc problems: No.3581,3582 (#4497)
yanglbme Jun 15, 2025
e68e1fd
feat: add new lc problems (#4498)
yanglbme Jun 16, 2025
53d1406
feat: add solutions to lc problem: No.3586 (#4499)
yanglbme Jun 16, 2025
43a2a84
feat: add solutions to lc problem: No.3584 (#4500)
yanglbme Jun 16, 2025
589c8db
feat: add solutions to lc problem: No.3581 (#4501)
yanglbme Jun 16, 2025
2c123b1
feat: add rust solutions to lc problems: No.2894,3581 (#4502)
yanglbme Jun 16, 2025
0bfadf8
feat: add solutions to lc problem: No.3405 (#4503)
yanglbme Jun 16, 2025
9de9346
feat: update lc problems (#4504)
yanglbme Jun 16, 2025
ac79b4f
feat: add rust solution to lc problem: No.2967 (#4505)
yanglbme Jun 17, 2025
590343f
feat: add c solutions to lc problems: No.0008,0009 (#4506)
pranjal030404 Jun 18, 2025
0fcbf87
feat: add solutions to lc problem: No.2294 (#4507)
yanglbme Jun 18, 2025
fe3eeb4
feat: add c solutions to lc problems: No.0010,0011 (#4508)
pranjal030404 Jun 19, 2025
9dcd740
feat: add rust solution to lc problem: No.3443 (#4509)
yanglbme Jun 19, 2025
6d918ed
feat: add php solution to lc problem: No.0010 (#4510)
yanglbme Jun 19, 2025
28cace0
feat: add c solutions to lc problems: No.0012,0013 (#4511)
pranjal030404 Jun 20, 2025
76cb00e
feat: add solutions to lc problem: No.3085 (#4512)
yanglbme Jun 20, 2025
e59e051
feat: add biweekly contest 159 (#4513)
yanglbme Jun 22, 2025
5f828dc
feat: add solutions to lc problem: No.3587 (#4514)
yanglbme Jun 22, 2025
0960310
feat: add weekly contest 455 (#4515)
yanglbme Jun 22, 2025
a7a652d
feat: add solutions to lc problem: No.1751 (#4516)
yanglbme Jun 22, 2025
186c8d3
feat: add solutions to lc problem: No.2081 (#4517)
yanglbme Jun 22, 2025
42061ce
chore: auto update starcharts
idoocs Jun 23, 2025
2bc4cdf
feat: add python solution to lc problem: No.3590 (#4518)
Ishanssr Jun 23, 2025
18a93fa
feat: add rust solutions to lc problem: No.2200 (#4520)
yanglbme Jun 23, 2025
05ffb40
feat: add c solutions to lc problems: No.0014,0015 (#4519)
pranjal030404 Jun 24, 2025
ac084bb
feat: add rust solution to lc problem: No.2040 (#4521)
yanglbme Jun 24, 2025
90f466e
feat: add new lc problem (#4522)
yanglbme Jun 24, 2025
5ded9f3
feat: update lc problems (#4523)
yanglbme Jun 25, 2025
6ef2369
feat: add rust solution to lc problem: No.2311 (#4524)
yanglbme Jun 25, 2025
9a9eb75
feat: add rust solution to lc problem: No.3330 (#4525)
yanglbme Jun 25, 2025
8c4ea1f
feat: add solutions to lc problem: No.2014 (#4526)
yanglbme Jun 26, 2025
56b3edb
feat: add solutions to lc problem: No.2099 (#4527)
yanglbme Jun 27, 2025
5ea879f
chore: use setAll func to initialize array in Java solution (#4528)
yanglbme Jun 27, 2025
74b8a69
feat: add solutions to lc problem: No.3696 (#4529)
yanglbme Jun 28, 2025
0bf2e51
feat: add rust solution to lc problem: No.3307 (#4530)
yanglbme Jun 28, 2025
bafd167
feat: add solutions to lc problem: No.1498 (#4531)
yanglbme Jun 29, 2025
a358d8f
feat: add weekly contest 456 (#4532)
yanglbme Jun 29, 2025
fe2396a
feat: add solutions to lc problem: No.3597 (#4534)
yanglbme Jun 29, 2025
4ae8f79
feat: add solutions to lc problem: No.3598 (#4535)
yanglbme Jun 29, 2025
e1541b3
feat: add solutions to lc problem: No.3599 (#4536)
yanglbme Jun 29, 2025
5b01d2f
feat: add rust solution to lc problem: No.0594 (#4537)
yanglbme Jun 29, 2025
13f8867
feat: add new lc problems (#4538)
yanglbme Jul 1, 2025
10461e4
feat: update lc problems (#4539)
yanglbme Jul 1, 2025
e8fc106
feat: add solutions to lc problem: No.3333 (#4540)
yanglbme Jul 1, 2025
11b9cba
feat: add solutions to lc problem: No.3333 (#4541)
yanglbme Jul 1, 2025
280a4b6
feat: add rust solution to lc problem: No.3304 (#4542)
yanglbme Jul 2, 2025
c692eef
feat: add solutions to lc problem: No.3601 (#4543)
yanglbme Jul 2, 2025
db8cc79
feat: add solutions to lc problem: No.3307 (#4545)
yanglbme Jul 3, 2025
e63bbb4
feat: add c solutions to lc problems: No.0016,0017 (#4544)
pranjal030404 Jul 3, 2025
d4b3ea3
feat: add solutions to lc problem: No.3439 (#4546)
yanglbme Jul 4, 2025
b3ce308
feat: add solutions to lc problem: No.1394 (#4547)
yanglbme Jul 4, 2025
9ab3cee
feat: add rust solution to lc problem: No.1865 (#4550)
yanglbme Jul 6, 2025
b7d00fe
feat: add biweekly contest 160 (#4551)
yanglbme Jul 6, 2025
2b5348d
chore: auto compress images (#4552)
github-actions[bot] Jul 6, 2025
82a0dd5
feat: add weekly contest 457 (#4553)
yanglbme Jul 6, 2025
b2220d0
feat: add solutions to lc problem: No.1353 (#4554)
yanglbme Jul 6, 2025
0f5ed3f
feat: add solutions to lc problem: No.3602 (#4555)
yanglbme Jul 6, 2025
15c59ee
chore: auto update starcharts
idoocs Jul 7, 2025
55d4ea1
feat: add rust solution to lc problem: No.1751 (#4556)
yanglbme Jul 7, 2025
d7fddea
feat: add solutions to lc problem: No.3606 (#4558)
yanglbme Jul 8, 2025
7ad3c3b
feat: add solutions to lc problem: No.3440 (#4559)
yanglbme Jul 10, 2025
3e49812
feat: add rust solution to lc problem: No.3169 (#4560)
yanglbme Jul 10, 2025
a70fbdb
feat: add solutions to lc problem: No.3611 (#4561)
yanglbme Jul 11, 2025
68ab63d
feat: add solutions to lc problem: No.1900 (#4562)
yanglbme Jul 12, 2025
b61fed3
chore: update lc problems (#4563)
yanglbme Jul 12, 2025
3e0f23e
feat: add rust solution to lc problem: No.2410 (#4564)
yanglbme Jul 12, 2025
3c5a7b2
feat: add weekly contest 458 (#4565)
yanglbme Jul 13, 2025
e9531d1
feat: add solutions to lc problems: No.3612,3613 (#4566)
yanglbme Jul 13, 2025
5c30065
feat: add solutions to lc problem: No.3616 (#4567)
yanglbme Jul 13, 2025
a666697
feat: add solutions to lc problem: No.1290 (#4568)
yanglbme Jul 13, 2025
6f7b0b3
feat: add solutions to lc problem: No.3136 (#4569)
yanglbme Jul 14, 2025
97d7b82
feat: add solutions to lc problem: No.3617 (#4570)
yanglbme Jul 14, 2025
47cb088
feat: add solutions to lc problems: No.3201,3202 (#4571)
yanglbme Jul 15, 2025
4db3791
feat: add solutions to lc problem: No.3203 (#4572)
yanglbme Jul 16, 2025
cf8049e
feat: add solutions to lc problem: No.2322 (#4573)
yanglbme Jul 17, 2025
5a94bc4
feat: add solutions to lc problem: No.2163 (#4574)
yanglbme Jul 17, 2025
de776ba
fix: update solutions to lc problems: No.1046,1354 (#4575)
yanglbme Jul 17, 2025
39c895b
feat: add solutions to lc problem: No.1233 (#4576)
yanglbme Jul 18, 2025
1b53d4d
fix: update solutions to lc problems: No.0630,0973,1962,2856 (#4577)
yanglbme Jul 18, 2025
c10a2f1
feat: add new lc problems (#4579)
yanglbme Jul 20, 2025
d369cf9
feat: add solution for deleting duplicate folders in a file system (#…
Speccy-Rom Jul 20, 2025
ed31865
feat: add solutions to lc problem: No.1948 (#4582)
yanglbme Jul 20, 2025
8c7fd24
feat: add solutions to lc problem: No.3618 (#4583)
yanglbme Jul 20, 2025
0fe1388
feat: add solutions to lc problem: No.3619 (#4586)
yanglbme Jul 20, 2025
2604b21
feat: update solutions to lc problem: No.1957 (#4587)
yanglbme Jul 20, 2025
60245f5
feat: add solutions to lc problem: No.3622 (#4588)
yanglbme Jul 20, 2025
f4c6fcf
feat: add rust solutions to lc problem: No.1695 (#4590)
yanglbme Jul 21, 2025
7cff981
feat: add solutions to lc problem: No.1960 (#4585)
samarthswami1016 Jul 22, 2025
246dbd3
feat: add solutions to lc problem: No.1717 (#4591)
yanglbme Jul 22, 2025
5464fea
chore: auto update starcharts
idoocs Jul 23, 2025
2dcb224
feat: add solution to lc problem: No.2322 (#4592)
yanglbme Jul 23, 2025
65f3542
feat: update lc problems (#4593)
yanglbme Jul 23, 2025
6569141
feat: add solutions to lc problems: No.3487,3488 (#4594)
yanglbme Jul 24, 2025
57d33e8
feat: add solutions to lc problem: No.3626 (#4596)
yanglbme Jul 25, 2025
721ac60
feat: add solutions to lc problem: No.3480 (#4598)
yanglbme Jul 26, 2025
1838ba4
feat: update lc problems (#4599)
yanglbme Jul 26, 2025
02c8054
feat: add weekly contest 460 (#4600)
yanglbme Jul 27, 2025
1455c9a
feat: add solutions to lc problem: No.3628 (#4601)
yanglbme Jul 27, 2025
fb3cfb3
feat: add solutions to lc problem: No.2044 (#4602)
yanglbme Jul 27, 2025
2aae650
feat: add solutions to lc problem: No.2411 (#4603)
yanglbme Jul 28, 2025
5058ba8
chore: update lc problems (#4604)
yanglbme Jul 28, 2025
ee8884b
feat: add solutions to lc problem: No.2419 (#4605)
yanglbme Jul 29, 2025
c38b9e2
feat: add solutions to lc problem: No.2683 (#4607)
yanglbme Jul 30, 2025
e929b22
feat: add solutions to lc problem: No.0118 (#4608)
yanglbme Jul 31, 2025
e2c8c36
feat: update lc problems (#4609)
yanglbme Jul 31, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: add solutions to lc problem: No.3573 (doocs#4468)
No.3573.Best Time to Buy and Sell Stock V
  • Loading branch information
yanglbme authored Jun 8, 2025
commit f5db36b8025ecaa44d2eaa1fd91cf61cc094eecc
149 changes: 145 additions & 4 deletions solution/3500-3599/3573.Best Time to Buy and Sell Stock V/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,32 +82,173 @@ edit_url: https://github.com/doocs/leetcode/edit/main/solution/3500-3599/3573.Be

<!-- solution:start -->

### 方法一
### 方法一:动态规划

我们定义 $f[i][j][k]$ 表示在前 $i$ 天内,最多进行 $j$ 笔交易,且当前状态为 $k$ 时的最大利润。这里的状态 $k$ 有三种可能:

- 若 $k = 0$,表示当前没有持有股票。
- 若 $k = 1$,表示当前持有一支股票。
- 若 $k = 2$,表示当前持有一支股票的空头。

初始时,对任意 $j \in [1, k]$,都有 $f[0][j][1] = -prices[0]$ 和 $f[0][j][2] = prices[0]$。这表示在第 0 天买入一支股票或卖出一支股票的空头。

接下来,我们可以通过状态转移来更新 $f[i][j][k]$ 的值。对于每一天 $i$ 和每笔交易 $j$,我们可以根据当前状态 $k$ 来决定如何更新:

- 若 $k = 0$,表示当前没有持有股票,这个状态可以由以下三种情况转移而来:
- 前一天没有持有股票。
- 前一天持有一支股票,并在今天卖出。
- 前一天持有一支股票的空头,并在今天买回。
- 若 $k = 1$,表示当前持有一支股票,这个状态可以由以下两种情况转移而来:
- 前一天持有一支股票。
- 前一天没有持有股票,并在今天买入。
- 若 $k = 2$,表示当前持有一支股票的空头,这个状态可以由以下两种情况转移而来:
- 前一天持有一支股票的空头。
- 前一天没有持有股票,并在今天卖出。

即,对于 $1 \leq i < n$ 和 $1 \leq j \leq k$,我们有以下状态转移方程:

$$
\begin{aligned}
f[i][j][0] &= \max(f[i - 1][j][0], f[i - 1][j][1] + prices[i], f[i - 1][j][2] - prices[i]) \\
f[i][j][1] &= \max(f[i - 1][j][1], f[i - 1][j - 1][0] - prices[i]) \\
f[i][j][2] &= \max(f[i - 1][j][2], f[i - 1][j - 1][0] + prices[i])
\end{aligned}
$$

最终,我们需要返回 $f[n - 1][k][0]$,即在前 $n$ 天内,最多进行 $k$ 笔交易,且当前没有持有股票时的最大利润。

时间复杂度 $O(n \times k)$,空间复杂度 $O(n \times k)$。其中 $n$ 为数组 $\textit{prices}$ 的长度,而 $k$ 为最大交易次数。

<!-- tabs:start -->

#### Python3

```python

class Solution:
def maximumProfit(self, prices: List[int], k: int) -> int:
n = len(prices)
f = [[[0] * 3 for _ in range(k + 1)] for _ in range(n)]
for j in range(1, k + 1):
f[0][j][1] = -prices[0]
f[0][j][2] = prices[0]
for i in range(1, n):
for j in range(1, k + 1):
f[i][j][0] = max(
f[i - 1][j][0],
f[i - 1][j][1] + prices[i],
f[i - 1][j][2] - prices[i],
)
f[i][j][1] = max(f[i - 1][j][1], f[i - 1][j - 1][0] - prices[i])
f[i][j][2] = max(f[i - 1][j][2], f[i - 1][j - 1][0] + prices[i])
return f[n - 1][k][0]
```

#### Java

```java

class Solution {
public long maximumProfit(int[] prices, int k) {
int n = prices.length;
long[][][] f = new long[n][k + 1][3];
for (int j = 1; j <= k; ++j) {
f[0][j][1] = -prices[0];
f[0][j][2] = prices[0];
}
for (int i = 1; i < n; ++i) {
for (int j = 1; j <= k; ++j) {
f[i][j][0] = Math.max(f[i - 1][j][0],
Math.max(f[i - 1][j][1] + prices[i], f[i - 1][j][2] - prices[i]));
f[i][j][1] = Math.max(f[i - 1][j][1], f[i - 1][j - 1][0] - prices[i]);
f[i][j][2] = Math.max(f[i - 1][j][2], f[i - 1][j - 1][0] + prices[i]);
}
}
return f[n - 1][k][0];
}
}
```

#### C++

```cpp

class Solution {
public:
long long maximumProfit(vector<int>& prices, int k) {
int n = prices.size();
long long f[n][k + 1][3];
memset(f, 0, sizeof(f));
for (int j = 1; j <= k; ++j) {
f[0][j][1] = -prices[0];
f[0][j][2] = prices[0];
}

for (int i = 1; i < n; ++i) {
for (int j = 1; j <= k; ++j) {
f[i][j][0] = max({f[i - 1][j][0], f[i - 1][j][1] + prices[i], f[i - 1][j][2] - prices[i]});
f[i][j][1] = max(f[i - 1][j][1], f[i - 1][j - 1][0] - prices[i]);
f[i][j][2] = max(f[i - 1][j][2], f[i - 1][j - 1][0] + prices[i]);
}
}

return f[n - 1][k][0];
}
};
```

#### Go

```go
func maximumProfit(prices []int, k int) int64 {
n := len(prices)
f := make([][][3]int, n)
for i := range f {
f[i] = make([][3]int, k+1)
}

for j := 1; j <= k; j++ {
f[0][j][1] = -prices[0]
f[0][j][2] = prices[0]
}

for i := 1; i < n; i++ {
for j := 1; j <= k; j++ {
f[i][j][0] = max(f[i-1][j][0], f[i-1][j][1]+prices[i], f[i-1][j][2]-prices[i])
f[i][j][1] = max(f[i-1][j][1], f[i-1][j-1][0]-prices[i])
f[i][j][2] = max(f[i-1][j][2], f[i-1][j-1][0]+prices[i])
}
}

return int64(f[n-1][k][0])
}
```

#### TypeScript

```ts
function maximumProfit(prices: number[], k: number): number {
const n = prices.length;
const f: number[][][] = Array.from({ length: n }, () =>
Array.from({ length: k + 1 }, () => Array(3).fill(0)),
);

for (let j = 1; j <= k; ++j) {
f[0][j][1] = -prices[0];
f[0][j][2] = prices[0];
}

for (let i = 1; i < n; ++i) {
for (let j = 1; j <= k; ++j) {
f[i][j][0] = Math.max(
f[i - 1][j][0],
f[i - 1][j][1] + prices[i],
f[i - 1][j][2] - prices[i],
);
f[i][j][1] = Math.max(f[i - 1][j][1], f[i - 1][j - 1][0] - prices[i]);
f[i][j][2] = Math.max(f[i - 1][j][2], f[i - 1][j - 1][0] + prices[i]);
}
}

return f[n - 1][k][0];
}
```

<!-- tabs:end -->
Expand Down
149 changes: 145 additions & 4 deletions solution/3500-3599/3573.Best Time to Buy and Sell Stock V/README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,32 +80,173 @@ We can make $36 of profit through 3 transactions:

<!-- solution:start -->

### Solution 1
### Solution 1: Dynamic Programming

We define $f[i][j][k]$ to represent the maximum profit on the first $i$ days, with at most $j$ transactions, and the current state $k$. Here, the state $k$ has three possibilities:

- If $k = 0$, it means we do not hold any stock.
- If $k = 1$, it means we are holding a stock.
- If $k = 2$, it means we are holding a short position.

Initially, for any $j \in [1, k]$, we have $f[0][j][1] = -prices[0]$ and $f[0][j][2] = prices[0]$. This means buying a stock or opening a short position on day 0.

Next, we update $f[i][j][k]$ using state transitions. For each day $i$ and each transaction $j$, we update according to the current state $k$:

- If $k = 0$, meaning no stock is held, this state can be reached from three situations:
- No stock was held the previous day.
- A stock was held the previous day and sold today.
- A short position was held the previous day and bought back today.
- If $k = 1$, meaning a stock is held, this state can be reached from two situations:
- A stock was held the previous day.
- No stock was held the previous day and a stock is bought today.
- If $k = 2$, meaning a short position is held, this state can be reached from two situations:
- A short position was held the previous day.
- No stock was held the previous day and a short position is opened (sold) today.

That is, for $1 \leq i < n$ and $1 \leq j \leq k$, we have the following state transition equations:

$$
\begin{aligned}
f[i][j][0] &= \max(f[i - 1][j][0], f[i - 1][j][1] + prices[i], f[i - 1][j][2] - prices[i]) \\
f[i][j][1] &= \max(f[i - 1][j][1], f[i - 1][j - 1][0] - prices[i]) \\
f[i][j][2] &= \max(f[i - 1][j][2], f[i - 1][j - 1][0] + prices[i])
\end{aligned}
$$

Finally, we return $f[n - 1][k][0]$, which is the maximum profit after at most $k$ transactions and not holding any stock at the end of $n$ days.

The time complexity is $O(n \times k)$, and the space complexity is $O(n \times k)$, where $n$ is the length of the array $\textit{prices}$ and $k$ is the maximum number of transactions.

<!-- tabs:start -->

#### Python3

```python

class Solution:
def maximumProfit(self, prices: List[int], k: int) -> int:
n = len(prices)
f = [[[0] * 3 for _ in range(k + 1)] for _ in range(n)]
for j in range(1, k + 1):
f[0][j][1] = -prices[0]
f[0][j][2] = prices[0]
for i in range(1, n):
for j in range(1, k + 1):
f[i][j][0] = max(
f[i - 1][j][0],
f[i - 1][j][1] + prices[i],
f[i - 1][j][2] - prices[i],
)
f[i][j][1] = max(f[i - 1][j][1], f[i - 1][j - 1][0] - prices[i])
f[i][j][2] = max(f[i - 1][j][2], f[i - 1][j - 1][0] + prices[i])
return f[n - 1][k][0]
```

#### Java

```java

class Solution {
public long maximumProfit(int[] prices, int k) {
int n = prices.length;
long[][][] f = new long[n][k + 1][3];
for (int j = 1; j <= k; ++j) {
f[0][j][1] = -prices[0];
f[0][j][2] = prices[0];
}
for (int i = 1; i < n; ++i) {
for (int j = 1; j <= k; ++j) {
f[i][j][0] = Math.max(f[i - 1][j][0],
Math.max(f[i - 1][j][1] + prices[i], f[i - 1][j][2] - prices[i]));
f[i][j][1] = Math.max(f[i - 1][j][1], f[i - 1][j - 1][0] - prices[i]);
f[i][j][2] = Math.max(f[i - 1][j][2], f[i - 1][j - 1][0] + prices[i]);
}
}
return f[n - 1][k][0];
}
}
```

#### C++

```cpp

class Solution {
public:
long long maximumProfit(vector<int>& prices, int k) {
int n = prices.size();
long long f[n][k + 1][3];
memset(f, 0, sizeof(f));
for (int j = 1; j <= k; ++j) {
f[0][j][1] = -prices[0];
f[0][j][2] = prices[0];
}

for (int i = 1; i < n; ++i) {
for (int j = 1; j <= k; ++j) {
f[i][j][0] = max({f[i - 1][j][0], f[i - 1][j][1] + prices[i], f[i - 1][j][2] - prices[i]});
f[i][j][1] = max(f[i - 1][j][1], f[i - 1][j - 1][0] - prices[i]);
f[i][j][2] = max(f[i - 1][j][2], f[i - 1][j - 1][0] + prices[i]);
}
}

return f[n - 1][k][0];
}
};
```

#### Go

```go
func maximumProfit(prices []int, k int) int64 {
n := len(prices)
f := make([][][3]int, n)
for i := range f {
f[i] = make([][3]int, k+1)
}

for j := 1; j <= k; j++ {
f[0][j][1] = -prices[0]
f[0][j][2] = prices[0]
}

for i := 1; i < n; i++ {
for j := 1; j <= k; j++ {
f[i][j][0] = max(f[i-1][j][0], f[i-1][j][1]+prices[i], f[i-1][j][2]-prices[i])
f[i][j][1] = max(f[i-1][j][1], f[i-1][j-1][0]-prices[i])
f[i][j][2] = max(f[i-1][j][2], f[i-1][j-1][0]+prices[i])
}
}

return int64(f[n-1][k][0])
}
```

#### TypeScript

```ts
function maximumProfit(prices: number[], k: number): number {
const n = prices.length;
const f: number[][][] = Array.from({ length: n }, () =>
Array.from({ length: k + 1 }, () => Array(3).fill(0)),
);

for (let j = 1; j <= k; ++j) {
f[0][j][1] = -prices[0];
f[0][j][2] = prices[0];
}

for (let i = 1; i < n; ++i) {
for (let j = 1; j <= k; ++j) {
f[i][j][0] = Math.max(
f[i - 1][j][0],
f[i - 1][j][1] + prices[i],
f[i - 1][j][2] - prices[i],
);
f[i][j][1] = Math.max(f[i - 1][j][1], f[i - 1][j - 1][0] - prices[i]);
f[i][j][2] = Math.max(f[i - 1][j][2], f[i - 1][j - 1][0] + prices[i]);
}
}

return f[n - 1][k][0];
}
```

<!-- tabs:end -->
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
class Solution {
public:
long long maximumProfit(vector<int>& prices, int k) {
int n = prices.size();
long long f[n][k + 1][3];
memset(f, 0, sizeof(f));
for (int j = 1; j <= k; ++j) {
f[0][j][1] = -prices[0];
f[0][j][2] = prices[0];
}

for (int i = 1; i < n; ++i) {
for (int j = 1; j <= k; ++j) {
f[i][j][0] = max({f[i - 1][j][0], f[i - 1][j][1] + prices[i], f[i - 1][j][2] - prices[i]});
f[i][j][1] = max(f[i - 1][j][1], f[i - 1][j - 1][0] - prices[i]);
f[i][j][2] = max(f[i - 1][j][2], f[i - 1][j - 1][0] + prices[i]);
}
}

return f[n - 1][k][0];
}
};
Loading