• 最小子数组


    题目描述:给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。

    样例:给出数组[1, -1, -2, 1],返回 -3

     1 <?php
     2 /**
     3  * 最小子数组
     4  * 给定一个整数数组,找到一个具有最小和的子数组。返回其最小和
     5  */
     6 include "./show.php";//定义了一个类似于var_dump()的方法
     7 
     8 /*
     9  * 1. 依次求取前n位的和, 那么,当然有两种情况:和为正;和为负
    10  * 2. 如果和为负,那么加上第n + 1位起,之后的某段数组是有意义的。我们可以假设第n + 1位起,到第m位,和为-10,而前n位的和为-3,两个一加得-13,肯定比-10小
    11  * 3. 而如果和为正,则不管再加入怎样一段数组,都是没有意义的,因为那一段被加入的数组,"不带"前n位"玩",自己会更小
    12  */
    13 function min_sub_array($data)
    14 {
    15     if(empty($data))
    16     {
    17         return false;
    18     }
    19     $min_sum = $data[0];
    20     $sum = 0;
    21     foreach($data as $v)
    22     {
    23         $sum += $v;
    24         if($sum < $min_sum)
    25         {
    26             $min_sum = $sum;
    27         }
    28         if($sum > 0)
    29         {
    30             $sum = 0;
    31         }
    32     }
    33     return $min_sum;
    34 }
    35 
    36 $arr = [1, -1, -2, 1];
    37 $res = min_sub_array($arr);
    38 show($res);
  • 相关阅读:
    汉语-词语:理解
    汉语-词语:头脑
    SELECT INTO
    SELECT
    scp
    samba
    rpmgraph
    rpmdeps
    rpmcache
    rpmbuild
  • 原文地址:https://www.cnblogs.com/573583868wuy/p/8749219.html
Copyright © 2020-2023  润新知