Skip to content

Commit 9f5f0a4

Browse files
committed
feat : solve maximum-subarray
1 parent 27ea13d commit 9f5f0a4

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

maximum-subarray/ekgns33.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
input : array of integer
3+
output : largest sum of subarray
4+
constraints :
5+
1) is the input array not empty?
6+
yes. at least one el
7+
2) range of integers
8+
[-10^4, 10^4]
9+
3) maximum lenght of input
10+
[10^5]
11+
>> maximum sum = 10^5 * 10^4 = 10 ^ 9 < INTEGER
12+
13+
sol1) brute force
14+
nested for loop : O(n^2)
15+
tc : O(n^2), sc : O(1)
16+
17+
sol2) dp?
18+
Subarray elements are continuous in the original array, so we can use dp.
19+
let dp[i] represent the largest sum of a subarray where the ith element is the last element of the subarray.
20+
21+
if dp[i-1] + curval < cur val : take curval
22+
if dp[i-1] + cur val >= curval : take dp[i-1] + curval
23+
tc : O(n) sc : O(n)
24+
*/
25+
class Solution {
26+
public int maxSubArray(int[] nums) {
27+
int n = nums.length;
28+
int[] dp = new int[n];
29+
int maxSum = nums[0];
30+
dp[0] = nums[0];
31+
for(int i = 1; i < n; i++) {
32+
if(dp[i-1] + nums[i] < nums[i]) {
33+
dp[i] = nums[i];
34+
} else {
35+
dp[i] = nums[i] + dp[i-1];
36+
}
37+
maxSum = Math.max(maxSum, dp[i]);
38+
}
39+
return maxSum;
40+
}
41+
}

0 commit comments

Comments
 (0)