2021/03/06 每日一题 下一个更大元素 II

LeetCode上下一个更大元素 II,中等难度,记录下解题思路

循环遍历数组,返回一个数组对应该位置上数组顺序下一个更大的数字,如果没有对应更大的数字就是-1

因为是查找数组顺序上下一个更大的数字,那么在数组最后一位的时候,需要循环遍历见面的元素才能找到更大的数

假设传入数组[1,3,2,4]分为两种比较情况

  1. 如果不是最后一个数,就是顺序比较数组内后面数的大小关系
  2. 如果是最后一个数,那么就是要从数组的第一位从新开始遍历

那么把数组复制一遍之后形成[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
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容