【leetcode】697. 数组的度

 

int findShortestSubArray(int* nums, int numsSize){
    int i,j,max=0,pst=0,minLen=50001;
    int hash[50000]={0}, startPst[50000], endPst[50000]={0};
    memset(startPst,-1,sizeof(int)*50000);
    for(i=0; i<numsSize; i++){
        ++hash[nums[i]];
        if(startPst[nums[i]]==-1)
            startPst[nums[i]]=i;
        else if(hash[nums[i]] >= max){
            endPst[nums[i]]=i;
            if(hash[nums[i]] > max || hash[nums[i]]==max && endPst[nums[i]]-startPst[nums[i]]+1 < minLen)
                minLen=endPst[nums[i]]-startPst[nums[i]]+1;
            max=hash[nums[i]];
        }
    }    
    return (minLen!=50001)?minLen :1;
}

 

posted @ 2020-11-22 18:47  温暖了寂寞  阅读(87)  评论(0编辑  收藏  举报