• 1339. 最大区间


    1339. 最大区间

    中文English

    给定一个非负数的整数数组,需要选出一个区间, 使得该区间是所有区间中值最大的一个,我们定义一个区间的值为:区间中的最小数 * 区间所有数的和。

    样例

    样例 1:

    输入:[6, 2, 1]
    输出:36
    解释:所有区间及其对应的值为:
    
    [6] = 6 * 6 = 36;
    
    [2] = 2 * 2 = 4;
    
    [1] = 1 * 1 = 1;
    
    [6,2] = 2 * 8 = 16;
    
    [2,1] = 1 * 3 = 3;
    
    [6, 2, 1] = 1 * 9 = 9;
    
    因此,最大的值为36。
    

    挑战

    最直观的算法复杂度是 O(n^2)O(n2​​) ,请在此基础上优化你的算法。

    注意事项

    数据范围:1 ≤ len(nums) ≤ 1e6; 0 ≤ nums[n] ≤ 100;

     
     
    输入测试数据 (每行一个参数)如何理解测试数据?
    class Solution:
        """
        @param nums: 
        @return: Find the maxmum range value. A range value is defined as the minimum value times the sum of all values in a range.
        """
        """
        大致思路:
        加内外循环,更新max_num,返回
        """
        def maxRange(self, nums):
            # write your code here
            #初始化
            max_num = 0
            d = []
            l = len(nums)
    
            for i in range(l):
                d.append(nums[i])
                
                for j in range(i, -1, -1):
                    current_num = min(nums[j: i + 1])*sum(nums[j:  i + 1])
    
                    if current_num > max_num:
                        max_num = current_num
                    
            return max_num

    注:lintcode未通过,时间复杂度问题,待优化.

  • 相关阅读:
    TeamViewer的替代品:realVNC
    Introduction of Generator in Python
    Excel: assign label to scatter chart using specific cell values
    reverse/inverse a mapping but with multiple values for each key
    虚拟化与云计算
    现代计算机简介
    CentOS 7 安装中网络设置111
    机械硬盘原理
    文件系统
    最重要的块设备——硬盘
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13138844.html
Copyright © 2020-2023  润新知