Skip to content

Commit 18a3c55

Browse files
committedMay 7, 2021
feat: update solutions to lc and lcof problems
1 parent 3760ded commit 18a3c55

File tree

7 files changed

+87
-17
lines changed

7 files changed

+87
-17
lines changed
 

‎lcof/面试题42. 连续子数组的最大和/README.md

+41-7
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,51 @@ class Solution {
6565
* @return {number}
6666
*/
6767
var maxSubArray = function (nums) {
68-
if (!nums || !nums.length) return null;
69-
let len = nums.length;
70-
let dp = new Array(len);
71-
dp[0] = nums[0];
72-
for (let i = 1; i < len; i++) {
73-
dp[i] = Math.max(nums[i], dp[i - 1] + nums[i]);
68+
let res = nums[0];
69+
let f = nums[0];
70+
for (let i = 1; i < nums.length; ++i) {
71+
f = Math.max(f, 0) + nums[i];
72+
res = Math.max(res, f);
7473
}
75-
return Math.max(...dp);
74+
return res;
7675
};
7776
```
7877

78+
### **C++**
79+
80+
```cpp
81+
class Solution {
82+
public:
83+
int maxSubArray(vector<int>& nums) {
84+
int res = nums[0], f = nums[0];
85+
for (int i = 1; i < nums.size(); ++i) {
86+
f = max(f, 0) + nums[i];
87+
res = max(res, f);
88+
}
89+
return res;
90+
}
91+
};
92+
```
93+
94+
### **Go**
95+
96+
```go
97+
func maxSubArray(nums []int) int {
98+
f, res := nums[0], nums[0]
99+
for i := 1; i < len(nums); i++ {
100+
if f > 0 {
101+
f += nums[i]
102+
} else {
103+
f = nums[i]
104+
}
105+
if f > res {
106+
res = f
107+
}
108+
}
109+
return res
110+
}
111+
```
112+
79113
### **...**
80114

81115
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Solution {
2+
public:
3+
int maxSubArray(vector<int>& nums) {
4+
int res = nums[0], f = nums[0];
5+
for (int i = 1; i < nums.size(); ++i) {
6+
f = max(f, 0) + nums[i];
7+
res = max(res, f);
8+
}
9+
return res;
10+
}
11+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
func maxSubArray(nums []int) int {
2+
f, res := nums[0], nums[0]
3+
for i := 1; i < len(nums); i++ {
4+
if f > 0 {
5+
f += nums[i]
6+
} else {
7+
f = nums[i]
8+
}
9+
if f > res {
10+
res = f
11+
}
12+
}
13+
return res
14+
}

‎lcof/面试题42. 连续子数组的最大和/Solution.js

+6-7
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
* @return {number}
44
*/
55
var maxSubArray = function (nums) {
6-
if (!nums || !nums.length) return null;
7-
let len = nums.length;
8-
let dp = new Array(len);
9-
dp[0] = nums[0];
10-
for (let i = 1; i < len; i++) {
11-
dp[i] = Math.max(nums[i], dp[i - 1] + nums[i]);
6+
let res = nums[0];
7+
let f = nums[0];
8+
for (let i = 1; i < nums.length; ++i) {
9+
f = Math.max(f, 0) + nums[i];
10+
res = Math.max(res, f);
1211
}
13-
return Math.max(...dp);
12+
return res;
1413
};

‎solution/0100-0199/0121.Best Time to Buy and Sell Stock/README.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,11 @@ class Solution {
8686
### **JavaScript**
8787

8888
```js
89-
const maxProfit1 = function (prices) {
89+
/**
90+
* @param {number[]} prices
91+
* @return {number}
92+
*/
93+
const maxProfit = function (prices) {
9094
let min = prices[0];
9195
let profit = 0;
9296
for (let i = 0; i < prices.length; i++) {

‎solution/0100-0199/0121.Best Time to Buy and Sell Stock/README_EN.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,11 @@ class Solution {
7676
### **JavaScript**
7777

7878
```js
79-
const maxProfit1 = function (prices) {
79+
/**
80+
* @param {number[]} prices
81+
* @return {number}
82+
*/
83+
const maxProfit = function (prices) {
8084
let min = prices[0];
8185
let profit = 0;
8286
for (let i = 0; i < prices.length; i++) {

‎solution/0100-0199/0121.Best Time to Buy and Sell Stock/Solution.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
const maxProfit1 = function (prices) {
1+
/**
2+
* @param {number[]} prices
3+
* @return {number}
4+
*/
5+
const maxProfit = function (prices) {
26
let min = prices[0];
37
let profit = 0;
48
for (let i = 0; i < prices.length; i++) {

0 commit comments

Comments
 (0)
Please sign in to comment.