zoukankan      html  css  js  c++  java
  • 最大的LeftMax与rightMax之差绝对值

      这两天去 牛客网 混了下,遇到的几道题都很有意思,尤其是今晚这道,比赛时不会做,后来看了别人的代码才突然想通的,题目链接:

    最大的LeftMax与rightMax之差绝对值,大意是:

      想了一晚都没想出,后来看了别人精简的代码后才想通,然后自己用C++写了下也过了:

      至于算法思路,为了给一个群友说清楚码了一大堆字,好累,后来想截图时却发现聊天记录没有了气泡模式,还是适当复制粘贴一下吧:

      首先选出的左右两部分的那两个最大的数,其中一个肯定是整个数组中最大的数,它可能被分在左边或右边,假设它在左边的话,那么只需要使右边那部分的最大的数最小就行,这样就能得出答案。而右边那部分一定包含数组最右边那个数(k的边界条件),假设刚才已找出的整个数组中最大的数下标为k,最右边那个数的下标为len-1,假设在len-1前到k这段区间中的数都比vec[len-1]小,那么答案就是vec[k]-vec[len-1],若果这段区间内有比vec[len-1]大的,那么就把它归入左边部分,这样子左边部分最大值还是vec[k],而右边部分最大值还是vec[len-1],所以这样子最终答案就是vec[k]-vec[len-1]。同理,当vec[k]在右边部分时可以得出答案为vec[k]-vec[0],所以最终答案就是 max( Max-vec[0], Max-vec[len-1] ) 了。

  • 相关阅读:
    php操作zip压缩文件
    php图像处理(thinkphp框架有相对强大的图像处理功能)
    php实现希尔排序(总结)
    PHP glob() 函数详解
    php资源类型变量
    dump var_dump print print_r的区别
    php实现遍历文件目录
    php常用函数
    php全局变量的使用
    php函数按地址传递参数(php引用)
  • 原文地址:https://www.cnblogs.com/Newdawn/p/4334058.html
Copyright © 2011-2022 走看看