LeeCode-刷题日记-Day18
334. 递增的三元子序列
维护一个最小值数组,存储当前i
对应的最小值。同时维护一个最大值数组,存储当前i
对应的最大值。判定当前nums[i]
是否处于前后的最大值与最小值之间。成立则存在一个递增的三元子序列。
/**
* @param {number[]} nums
* @return {boolean}
*/
var increasingTriplet = function(nums) {
if(nums.length<3) return false;
let leftMin = new Array(nums.length).fill(0);
let rightMax= new Array(nums.length).fill(0);
leftMin[0]=nums[0];
rightMax[nums.length-1]=nums[nums.length-1];
for(let i=1;i<nums.length;i++){
leftMin[i]=Math.min(leftMin[i-1],nums[i]);
}
for(let i=nums.length-2;i>=0;i--){
rightMax[i]=Math.max(rightMax[i+1],nums[i]);
}
for(let i=1;i<nums.length-1;i++){
if(nums[i]>leftMin[i-1]&&nums[i]<rightMax[i+1])
return true;
}
return false;
};
238. 除自身以外数组的乘积
除自身以外数组的乘积可以视为,此数左乘积和右乘积相乘。需要维护一个左乘积,一个右乘积。
/**
* @param {number[]} nums
* @return {number[]}
*/
var productExceptSelf = function(nums) {
const res = new Array(nums.length).fill(1);
let temp=1;
for(let i=0;i<nums.length;i++){
res[i]=temp*res[i];
temp=temp*nums[i];
}
temp=1;
for(let j=nums.length-1;j>=0;j--){
res[j]=temp*res[j];
temp = temp*nums[j];
}
return res;
}
- 本文链接:https://archer-lan.github.io/2023/11/20/LeeCode-%E5%88%B7%E9%A2%98%E6%97%A5%E8%AE%B0-Day18/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。