我试图解决leetcode上的Sum of Subarray Ranges
个问题,它给了我Time Limit Exceeded
个问题,所以我想我的代码没有得到很好的优化,需要更高效的解决方案.但我不太擅长,所以具体来说,我如何在代码中删除两个for-loops
和一个.
问题1:Sum of Subarray Ranges
给您一个整数数组nums.NUM子数组的范围是子数组中最大和最小元素之间的差.
例子:
Input: nums = [1,2,3]
Output: 4
Explanation: The 6 subarrays of nums are the following:
[1], range = largest - smallest = 1 - 1 = 0
[2], range = 2 - 2 = 0
[3], range = 3 - 3 = 0
[1,2], range = 2 - 1 = 1
[2,3], range = 3 - 2 = 1
[1,2,3], range = 3 - 1 = 2
So the sum of all ranges is 0 + 0 + 0 + 1 + 1 + 2 = 4.
队列link
我的代码:测试用例:52/71
var subArrayRanges = function(nums) {
let maxSub=0;
for(let i=0; i<nums.length; i++){
let arr=[];
arr.push(nums[i])
for(let j=i+1; j<nums.length; j++){
arr.push(nums[j]);
maxSub=maxSub+(Math.max(...arr)) - (Math.min(...arr));
}
}
return maxSub
};
如何优化代码,使其能够运行所有测试用例?