LeetCode上下一个更大元素 II,中等难度,记录下解题思路
循环遍历数组,返回一个数组对应该位置上数组顺序下一个更大的数字,如果没有对应更大的数字就是-1
因为是查找数组顺序上下一个更大的数字,那么在数组最后一位的时候,需要循环遍历见面的元素才能找到更大的数
假设传入数组[1,3,2,4]分为两种比较情况
- 如果不是最后一个数,就是顺序比较数组内后面数的大小关系
- 如果是最后一个数,那么就是要从数组的第一位从新开始遍历
那么把数组复制一遍之后形成[1,3,2,4,1,3,2,4]
面对不是最后一个数的情况,只需要向后比较,并且获得第一个大于自己的数的时候跳出本次循环,并且保存当前数即可,如果都没有大于自己的数的情况,就是-1
如果是最后一个数,向后还能遍历一整个数组,也能完成目标
var nextGreaterElements = function(nums) {
// 复制连接数组
let arr = nums.concat(nums)
// 创建一个结果数组
let res = Array(nums.length).fill(-1)
for(let i = 0;i<nums.length; i++) {
// 针对每个元素都往后遍历整个复制的数组
for(let j = i + 1; j < arr.length;j++) {
if(nums[i] < arr[j]) {
res[i] = arr[j]
// 跳出当前循环
break;
}
}
}
return res
};