Skip to content

Latest commit

 

History

History
64 lines (53 loc) · 2.21 KB

53.md

File metadata and controls

64 lines (53 loc) · 2.21 KB

✏️Leetcode基础刷题之(53. Maximum Subarray)


. 2019-02-18 吴亲库里 库里的深夜食堂

✏️题目描述

求最大的最大子阵列。给定一个整数的数组,找出其最大的整数的连续子数组。以下是我的解决方案,他的大O时间是O(n),好像这道题可以用分治法解决,后面看的时候再改吧


✏️题目实例

比如给定[2,-1,5,2,-1];那么这组数组中最大的和是8,也就是[2,-1,5,2];


✏️题目分析

循环整个数组,循环的时候从第二个数开始,如果第一个数小于0,那么把当前第一个数的值赋值给这个变量,否则的话是个非负数,和当前的变量相加成和,然后再进行比较,当前这个新变量和之前的哪个大,取大的值,进人下一次循环,最后返回这个变量也就是这个数组的最大和了。时间复杂度,是由$nums的个数决定的,所以是O(n).


✏️最终实现代码

    /**
        * @param Integer[] $nums
        * @return Integer
        */
       function maxSubArray($nums) {
            $cur=$nums[0];
             $res=$nums[0];
       for($i=1;$i<count($nums);$i++){
           if($cur<0){
               $cur=$nums[$i];
           
           }else{
               $cur +=$nums[$i];
           }
           $res=max($res,$cur);
       }
       return $res;
       }

💾今天的数据库(180. Consecutive Numbers)


💾题目描述

写一段sql,查询出至少连续出现三次的数字


💾题目分析

求id排除相同的,然后两个条件是连续三次一样,也就是Num三次相等的并且id的是自增的状态,


💾最终实现sql

这样解的效率很低

select distinct a.Num as ConsecutiveNums  FROM Logs a,Logs b, Logs c 
WHERE 
(b.Id=a.Id+1) and (c.id=b.id+1) and (a.Num =b.Num) and (b.num=c.Num )

联系