.
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;
}
写一段sql,查询出至少连续出现三次的数字
求id排除相同的,然后两个条件是连续三次一样,也就是Num三次相等的并且id的是自增的状态,
这样解的效率很低
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 )
