Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7aa3ac6

Browse files
refactor 188
1 parent5562b64 commit7aa3ac6

File tree

1 file changed

+29
-50
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+29
-50
lines changed
Lines changed: 29 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,37 @@
11
packagecom.fishercoder.solutions;
22

3-
/**
4-
5-
188. Best Time to Buy and Sell Stock IV
6-
7-
Say you have an array for which the ith element is the price of a given stock on day i.
8-
9-
Design an algorithm to find the maximum profit. You may complete at most k transactions.
10-
11-
Note:
12-
You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).
13-
14-
Example 1:
15-
Input: [2,4,1], k = 2
16-
Output: 2
17-
Explanation: Buy on day 1 (price = 2) and sell on day 2 (price = 4), profit = 4-2 = 2.
18-
19-
Example 2:
20-
Input: [3,2,6,5,0,3], k = 2
21-
Output: 7
22-
Explanation: Buy on day 2 (price = 2) and sell on day 3 (price = 6), profit = 6-2 = 4.
23-
Then buy on day 5 (price = 0) and sell on day 6 (price = 3), profit = 3-0 = 3.
24-
25-
*/
263
publicclass_188 {
27-
publicstaticclassSolution1 {
28-
/** credit: https://discuss.leetcode.com/topic/8984/a-concise-dp-solution-in-java */
29-
publicintmaxProfit(intk,int[]prices) {
30-
intlen =prices.length;
31-
if (k >=len /2) {
32-
returnquickSolve(prices);
33-
}
34-
35-
int[][]t =newint[k +1][len];
36-
for (inti =1;i <=k;i++) {
37-
inttmpMax = -prices[0];
38-
for (intj =1;j <len;j++) {
39-
t[i][j] =Math.max(t[i][j -1],prices[j] +tmpMax);
40-
tmpMax =Math.max(tmpMax,t[i -1][j -1] -prices[j]);
4+
publicstaticclassSolution1 {
5+
/**
6+
* credit: https://discuss.leetcode.com/topic/8984/a-concise-dp-solution-in-java
7+
*/
8+
publicintmaxProfit(intk,int[]prices) {
9+
intlen =prices.length;
10+
if (k >=len /2) {
11+
returnquickSolve(prices);
12+
}
13+
14+
int[][]t =newint[k +1][len];
15+
for (inti =1;i <=k;i++) {
16+
inttmpMax = -prices[0];
17+
for (intj =1;j <len;j++) {
18+
t[i][j] =Math.max(t[i][j -1],prices[j] +tmpMax);
19+
tmpMax =Math.max(tmpMax,t[i -1][j -1] -prices[j]);
20+
}
21+
}
22+
returnt[k][len -1];
4123
}
42-
}
43-
returnt[k][len -1];
44-
}
4524

46-
privateintquickSolve(int[]prices) {
47-
intlen =prices.length;
48-
intprofit =0;
49-
for (inti =1;i <len;i++) {
50-
// as long as there is a price gap, we gain a profit.
51-
if (prices[i] >prices[i -1]) {
52-
profit +=prices[i] -prices[i -1];
25+
privateintquickSolve(int[]prices) {
26+
intlen =prices.length;
27+
intprofit =0;
28+
for (inti =1;i <len;i++) {
29+
// as long as there is a price gap, we gain a profit.
30+
if (prices[i] >prices[i -1]) {
31+
profit +=prices[i] -prices[i -1];
32+
}
33+
}
34+
returnprofit;
5335
}
54-
}
55-
returnprofit;
5636
}
57-
}
5837
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp