字節跳動-2018-筆試-01

爲了避免斷優化推薦效果,今日頭條天天要存儲和處理海量數據。假設有這樣一種場景:咱們對用戶按照它們的註冊時間前後來標號,對於一類文章,每一個用戶都有不一樣的喜愛值,咱們會想知道某一段時間內註冊的用戶(標號相連的一批用戶)中,有多少用戶對這類文章喜愛值爲k。由於一些特殊的緣由,不會出現一個查詢的用戶區間徹底覆蓋另外一個查詢的用戶區間(不存在L1<=L2<=R2<=R1)。java

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import  java.util.*;
 
public  class  Main {
     public  static  void  main(String[] args) {
         Scanner sc =  new  Scanner(System.in);
         int  userTotal = sc.nextInt();
         HashMap<Integer, List<Integer>> like =  new  HashMap<>();
         for  ( int  i= 1 ; i<=userTotal; i++) {
             int  k = sc.nextInt();
             if  (like.containsKey(k)) {
                 List<Integer> list = like.get(k);
                 list.add(i);
             else  {
                 List<Integer> list =  new  ArrayList<>();
                 list.add(i);
                 like.put(k, list);
             }
         }
         int  groupTotal = sc.nextInt();
         List<Integer> result =  new  ArrayList<>();
         for ( int  i= 0 ; i<groupTotal; i++) {
             int  low = sc.nextInt();
             int  high = sc.nextInt();
             int  k = sc.nextInt();
             int  total =  0 ;
             List<Integer> list = like.get(k);
             if  (list !=  null ) {
                 for  (Integer integer : list) {
                     if  (integer >= low && integer <= high) total++;
                 }
             }
             result.add(total);
         }
         for  (Integer integer:result) {
             System.out.println(integer);
         }
     }
}



做爲一個手串藝人,有金主向你訂購了一條包含n個雜色串珠的手串——每一個串珠要麼無色,要麼塗了若干種顏色。爲了使手串的色彩看起來不那麼單調,金主要求,手串上的任意一種顏色(不包含無色),在任意連續的m個串珠裏至多出現一次(注意這裏手串是一個環形)。手串上的顏色一共有c種。如今按順時針序告訴你n個串珠的手串上,每一個串珠用所包含的顏色分別有哪些。請你判斷該手串上有多少種顏色不符合要求。即詢問有多少種顏色在任意連續m個串珠中出現了至少兩次。優化

import java.util.*;
public class Main{
public static void main(String args[]){

Scanner sc= new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
int c=sc.nextInt();
int arr[][]= new int[n][];
int arrCount[]= new int[n];
HashMap<Integer, List<Integer>> ma=new HashMap<>();
for(int i=0;i<n;i++){
int iCount=sc.nextInt();
arrCount[i]=iCount;
if(iCount==0){
;
}else{
for(int j=0;j<iCount;j++){
int x=sc.nextInt();
if(ma.containsKey(x)){
List<Integer> li= ma.get(x);

// List<Integer> list = like.get(k);
li.add(i);


}else{
List<Integer> li=new ArrayList<>();
li.add(i);
ma.put(x,li);
}
}
}


}
int flag=0;

//遍歷map中的值
for (List<Integer> li: ma.values()) {
Collections.sort(li);
int f=li.get(0);
for(int k=1;k<li.size();k++){
if((f+m)>li.get(k)){
flag++;
break;
}
f=li.get(k);
}
//最後一位


}
System.out.println(flag);
}
}spa

字符串S由小寫字母構成,長度爲n。定義一種操做,每次均可以挑選字符串中任意的兩個相鄰字母進行交換。詢問在至多交換m次以後,字符串中最多有多少個連續的位置上的字母相同?code

相關文章
相關標籤/搜索