【leetcode】数组的度-两个map关联初探

class Solution {
public:
 unordered_map<int,vector<int>> m;//统计开始和结束坐标    unordered_map<int,int> m1;//统计度  
int findShortestSubArray(vector<int>& nums) {     
 int max=0;//统计最大频数     
 int min=50000;//统计最短长度  
//统计所有字符开始的坐标    
for(int i=0;i<nums.size();i++){       
     m1[nums[i]]++;          
 if(m1[nums[i]]>max) max=m1[nums[i]];            if(m[nums[i]].size()==0){                m[nums[i]].push_back(i);         
    }           
     else if(m[nums[i]].size()==1){                m[nums[i]].push_back(i);          
       }          
         else if(m[nums[i]].size()==2){                m[nums[i]][1]=i;        
   }     }     
 unordered_map<int,int>::iterator it;        for(it=m1.begin();it!=m1.end();it++){     
  if(it->second!=max) continue;       
   if(m[it->first].size()==2){        
  if(m[it->first][1]-m[it->first][0]+1<min){
     min=m[it->first][1]-m[it->first][0]+1;                }                      
  }       
   else{         
   return 1;    
 }

 }  
 return min;
    }
 };
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读