如果不小心网友来到了这里请网友自动飘走,浪费你们时间表示歉意。该系列博客的目的是:想自己作为自律工具趁着过年没事每天刷几道题作为打卡督促的功能,没有什么可参考学习的东西,也不是刷博客量充大佬的目的
2021放假第三天,2月8日
栈
题号:739
var dailyTemperatures = function (T) {
//记录结果
let result = []
//这里堆栈记录局部数据
let stack = []
for (let i = T.length - 1; i >= 0; i--) {
let cur = T[i]
while (stack.length != 0 && T[stack[stack.length - 1]] <= cur) {
stack.pop()
}
if (stack.length == 0) {
result.unshift(0)
} else {
result.unshift(stack[stack.length - 1] - i)
}
stack.push(i)
}
return result
};
题号:496
//暴力解法就不考虑了
var nextGreaterElement = function (nums1, nums2) {
let result = []
let stack = []
let map = new Map()
for (let i = nums2.length - 1; i >= 0; i--) {
const cur = nums2[i];
while (stack.length != 0 && stack[stack.length - 1] <= cur) {
stack.pop()
}
if (stack.length == 0) {
map.set(cur, -1)
} else {
map.set(cur, stack[stack.length - 1])
}
stack.push(cur)
}
for (let i = 0; i < nums1.length; i++) {
const ele = nums1[i];
result.push(map.get(ele))
}
return result
};
题号:503
沿用了739的思路卡在循环的处理上了,最终临摹别人的思路,惭愧
var nextGreaterElements = function (nums) {
let result = []
let stack = []
for (let i = 2 * nums.length - 1; i >= 0; i--) {
const ele = nums[i % nums.length];
while (stack.length != 0 && stack[stack.length - 1] <= ele) {
stack.pop()
}
if (stack.length == 0) {
result[i % nums.length] = -1
} else {
result[i % nums.length] = stack[stack.length - 1]
}
stack.push(ele)
}
return result
};