Skip to content

Latest commit

 

History

History
57 lines (48 loc) · 2.77 KB

88.md

File metadata and controls

57 lines (48 loc) · 2.77 KB

##Leetcode基础刷题之(88. Merge Sorted Array)
. 2019-02-26 吴亲库里 库里的深夜食堂

✏️题目描述

给定两个排序数组,合并他们,把nums2这个数组合并到nums1,而不是变成一个新的数组


✏️题目实例

num1=[1,2,3,000], m=3,num2=[2,5,6],n=3;最终结果[1,2,2,3,5,6]


✏️题目分析

最后归并到nums1数组采用的是引用赋值,所以我们在归并的时候应该从数组的尾部进行判断插入,如果是从首部,那么归并好的数值可能会覆盖掉原先还未进行归并的数组$num1上的值,再定义个变量用来存储合并之后数组的最后索引位置,所以整体的思想是,从两个数组的最后值开始进行比较,比较一次自减索引值,只要他们的索引值不小于0(0就是数组第一个数),如果当中哪个小于0了,说明此时当前数组已无可比较元素,那么把另一个数组之后的数值全部依次插入到$nums1中,假如当前相对索引处的值一方大于另一方,那么就把大的那一方值插入到当前新数组的索引处(大的在数组后面),因为是引用传值,最后$nums1数组合并以后变成一个新的有序数组


✏️最终实现代码

     function merge(&$nums1, $m, $nums2, $n) {
           $index1=$m-1;$index2=$n-1;  //从尾部开始进行归并,如果从首部开始,归并好的值会覆盖掉未归并的值,这里使用引用赋值
           $count_index=$m+$n-1; //
           while($index1>=0 || $index2>=0){
               if($index1<0){
                   $nums1[$count_index--]=$nums2[$index2--];
               }else if ($index2<0){
                   $nums1[$count_index--]=$nums1[$index1--];
               }else if($nums1[$index1]>$nums2[$index2]){
                   $nums1[$count_index--]=$nums1[$index1--];
               }else{
                   $nums1[$count_index--]=$nums2[$index2--];
               }
           }
       }

💾今天的数据库(596. Classes More Than 5 Students)


💾题目描述

查找出所有超过5名学生的班级,最后显示的是班级名称


💾题目分析

HAVING 表示的是(group by)以后的筛选条件,用在聚合函数中,意思和where是一样的,只是where不能和聚合函数一起使用 ,最后统计课程不小于5位(条件),关键词DISTINCT用于去掉重复的student.


💾最终实现sql

SELECT class FROM courses Group BY class  HAVING count(DISTINCT student) >=5

联系