JavaScript / TypeScript for LeetCode
当前进程:
开始时间:2020.6.27结束时间:undefined
GitHub仓库:https://github.com/Cundefined/JavaScript-or-TypeScript-for-LeetCode
参考视频:https://www.bilibili.com/video/BV1wA411b7qZ
1、题目要求
( LeetCode-第53题 ) 最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入
: [-2,1,-3,4,-1,2,1,-5,4],
输出
: 6
解释
: 连续子数组
[4,-1,2,1] 的和最大,为
6。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximum-subarray 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2、解题思路
解题思路:动态规划
创建一个空数组,用来存储子数组
创建一个保存最大值的变量
预先存入第一个元素
遍历输入数组:
4.1、对当前要加入子数组的元素进行判断
4.2、是直接加入nums[i],还是以nums[i]新开一个数组
4.3、比较子数组元素之和与nums[i],前者大就直接加入nums[i],后者大就 以nums[i]新开数组 4.4、比较完成后,更新最大子序列和
返回结果
2.1、JavaScript Solution
var maxSubArray = function (nums
) {
let subArray
= [];
let max
= nums
[0];
subArray
[0] = nums
[0];
for (let i
= 1; i
< nums
.length
; i
++) {
subArray
[i
] = Math
.max(nums
[i
] + subArray
[i
- 1], nums
[i
]);
max
= Math
.max(max
, subArray
[i
]);
}
return max
;
};
2.2、TypeScript Solution
function maxSubArray(nums
: number
[]): number
{
if (nums
.length
=== 0) {
return 0;
}
let subArray
: number
[] = [];
let max
: number
= nums
[0];
subArray
[0] = nums
[0];
for (let i
: number
= 1; i
< nums
.length
; i
++) {
subArray
[i
] = Math
.max(nums
[i
] + subArray
[i
- 1], nums
[i
]);
max
= Math
.max(max
, subArray
[i
]);
}
return max
;
};