左右数组题单

一、 左右数组

  1. 左右数组
  • 其实这一个标题并不是一个算法的专有名词,而是我完成一类题目的第一反应。
  • 我们现在来举一个例子来说明,比如说给我们一个数组,要我们求出每一个数组的每一个下标index,左边(从0开始包括它自己在内)的子数组中最大的元素,以及右边(从index下标开始到数组结尾)的子数组中的最大值。
  • ex: nums = [1,3,5,7,6]
    我们可以得到一个数组对于下标0,来说左边的最大值是1(它本身),右边的最大值是7(下标3)
    ...
    对于下标4来说,左边最大值是7(下标3),右边的最大值是6(它本身);
  1. 可能经过上面的一个简单例子,我们不难发现一点,就是,nums[1]的左边最大值,与nums[0]的左边最大值存在某种联系,而这种联系也是显而易见的。我们命名一个长度与nums相等的数组left,其中left[i]->下标[0,i]的最大值。
  • 我们不难发现,left[i] = max(left[i-1],nums[i])(i>0),left[0] = nums[0];
    我们就存储了每一个索引对应的left值,然后我们同样命名一个right,同理得到一个right数组。

二、题目

  1. 可能经过上面的简单描述,会觉得有些莫名其妙,但是还是不知道如何下手。最近时不时见到有这种类型的题目,因此我整理了一部分,后续会对每一题进行题解,希望能对大家有所帮助:
posted @ 2022-10-24 22:18  QViVi  阅读(30)  评论(0)    收藏  举报