zoukankan      html  css  js  c++  java
  • 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未通过,时间复杂度问题,待优化.

  • 相关阅读:
    Python Day23
    Python Day22
    Python Day21
    Python Day20
    Python Day19
    Python Day18
    Python Day17
    Python Day15
    Appium python unittest pageobject如何实现加载多个case
    Appium python Uiautomator2 多进程问题
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13138844.html
Copyright © 2011-2022 走看看