LeetCode题目-219

首页 编程分享 LEET_CODE 正文

leetCode 转载 编程分享 2018-11-05 02:49:27

简介 LeetCode题目-219


✏Leetcode之PHP版题目解析(Leetcode基础刷题之PHP解析(219. Contains Duplicate II))


✏描述

给定一个整形数组以及一个整形k,查找在数组中是否存在下标i和j满意$nums[$i]==$nums[$j] 并且他们之间下标差不大于k。


✏题目实例


✏题目分析

如果是用暴力破解法的话两个for循环在第二层循环体中判断是可以的,但是会超时,所以不行。我们需要在O(n)的时间内完成。那么我们可以维护一个数组,如果数组中不存在当前值,就直接push进数组。这个数组的长度最多只能是k,一旦超过就说明即使后面有值和数组中第一个数相等,他们的距离差肯定大于k。所以一旦长度超过,直接从数组中删除掉第一个数。只要数组存在这个值,那么就可以直接返回true。


/**
     * @param Integer[] $nums
     * @param Integer $k
     * @return Boolean
     */
    function containsNearbyDuplicate($nums, $k) {
        $data=[];
        for($i=0;$i < count($nums);$i++){
            if(in_array($nums[$i],$data)) return true;
            $data[]=$nums[$i];
            if(count($data)>$k){
                array_shift($data);
            }
        }
        return false;
    }


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


Tags:


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


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


      最新评论




ABOUT ME

Blogger:袅袅牧童 | Arkin

Ido:PHP攻城狮

WeChat:nnmutong

Email:nnmutong@icloud.com

标签云