3.30 阿里校招实习笔试
  第一题 超时了…… 
   第二题 有n个数,其找出其子集,满足: 
   是连续的自然数,如集合[1 2 3] 
   1 2 3 12 23 123 都是,13就不是,求每个子集最大值的期望 
   (我最后才反应过来他给的数据不一定是连续的,所以要判断子集是否合法 等我改完已经交卷了…… ) 
   (awsl 吃了两个鸭蛋) 
     #n 个数的子集和最大值的期望    
       #连续的子序列    
     def valid(arr):   
       if len(arr)==1:   
       return True    
       else:   
       for i in range(len(arr)-1):   
       if arr[i+1]-arr[i]!=1:   
       return False    
       return True    
     def get_vec(n):   
       #已排好序的    
       res=[]   
       dicta={}   
       for i in range(1,len(n)+1):   
       for j in range(0,len(n)):   
       temp=n[j:j+i]   
       if temp not in res and valid(temp)==True:   
       res.append(temp)   
       for i in res:   
       maxnum=max(i)   
       if maxnum not in dicta:   
       dicta[maxnum]=1    
       else:   
       dicta[maxnum]+=1    
       lenres=len(res)   
       res=0    
       for i in dicta.keys():   
       res+=float(i/lenres)*i   
       return res   
     def test():   
       n=int(input())   
       lst=input().split(' ')   
       newlst=[]   
       for i in lst:   
       newlst.append(int(i))   
       ans='%.6f'%get_vec(newlst)   
       return ans   
     print(test())   
  字节跳动公司福利 1313人发布
字节跳动公司福利 1313人发布
