Leetcode PHP题解--D98 697. Degree of an Array

D98 697. Degree of an Array

题目链接

697. Degree of an Array

题目分析

返回出现次数最多的元素的键差最小的值。

思路

先用array_count_values计算元素出现次数,用arsort排序。

再遍历该数组,记录第一个元素的值。用以记录最大值。

获取当前遍历元素在原数组中的最小下标和最大下标。其差值为所求数。

最后返回最小的该数即可。

最终代码

<?php
class Solution {

    /**
     * @param Integer[] $nums
     * @return Integer
     */
    function findShortestSubArray($nums) {
        $elementCount = array_count_values($nums);
        $revNums = array_reverse($nums);
        $numAmounts = count($nums);
        arsort($elementCount);
        $minLength = 50000;
        
        $maxValue = key($elementCount);
        $maxAmount = current($elementCount);
        foreach($elementCount as $elk => $elv){
            if($elv<$maxAmount){
                break;
            }
            $left = array_search($elk, $nums);
            $right = $numAmounts - array_search($elk, $revNums)-1;
            if($right-$left+1 <$minLength){
                $minLength = $right-$left+1;
            }
        };
        
        return $minLength;
    }
}

本代码运行时间只超过了20%的提交。故肯定是有更优解的。

若觉得本文章对你有用,欢迎用爱发电资助。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 数组 记录《剑指offer》中所有关于数组的题目,以及LeetCode中的相似题目 相关题目列表 说明 由于简书...
    wenmingxing阅读 1,610评论 1 12
  • 一、数组定义 array() 1、索引数组 在一个变量中,存储一个或多个值。数组中的每一个元素都有一个访问ID,根...
    竹与豆阅读 584评论 0 0
  • leetcode刷题记录本文记录一下leetcode刷题记录,记录一下自己的解法和心得。 LeetCode Two...
    EarthChen阅读 3,610评论 0 6
  • 01 今天过的提心吊胆,由于工作的疏忽,出了个问题。我害怕被P。补救方法1:自己做的事情一定要亲自动手,不能依靠别...
    2orange阅读 171评论 0 0
  • 流浪人该庆幸 那是自由的荣耀 没见仕途冷 没见将相苦 生途艰 要带泪 要带疯 要桃开飘香 剪诗剪远方 为的自由
    化作枫阅读 198评论 2 3

友情链接更多精彩内容