LeetCode题目-128

首页 编程分享 LEET_CODE 正文

leetCode 转载 编程分享 2022-06-24 01:45:36

简介 LeetCode题目-128


✏Leetcode基础刷题之(128. Longest Consecutive Sequence)


✏描述

给定一个非排序的整形数组,求最长的连续序列长度。算法在O(n)的时间完成


✏题目实例

✏题目分析

其实这道题还是好理解的,如果是空直接返回0,否则可以先给数组排序,这样的话只需要遍历整个有序的数组,如果当前数和上一个数值一样的,不需要增加他的最长的长度,啥都不用处理,否则的话,只有两种情况,要么当前比上一个大1,要么不是,如果当前是等于上一个数+1,我们就更新当前最长的序列长度,否则的话我们就更新全局最长的长度,然后把当前最长的长度序列重新赋值,进行下一轮的统计。

      /**
       * @param Integer[] $nums
       * @return Integer
       */
      function longestConsecutive($nums) {
          if(empty($nums)) return 0;
          sort($nums);
          $max=1;
          $current=1;
          for($i=1;$i < count($nums);$i++){
              if($nums[$i] !=$nums[$i-1]){
                  if($nums[$i] == $nums[$i-1]+1){
                      $current +=1;
                  }else{
                      $max=max($current,$max);
                      $current=1;
                  }
              }
          }
          return max($current,$max);
      }


可以自己思考一下为什么最后我们还需要比较全局最大长度和当前最大长度。

转载链接:https://leetcode.cn/


Tags:


本篇评论 —— 揽流光,涤眉霜,清露烈酒一口话苍茫。


    声明:参照站内规则,不文明言论将会删除,谢谢合作。


      最新评论




ABOUT ME

Blogger:袅袅牧童 | Arkin

Ido:PHP攻城狮

WeChat:nnmutong

Email:nnmutong@icloud.com

标签云