字节跳动-2018-笔试-01

Posted wen-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节跳动-2018-笔试-01相关的知识,希望对你有一定的参考价值。

为了不断优化推荐效果,今日头条每天要存储和处理海量数据。假设有这样一种场景:我们对用户按照它们的注册时间先后来标号,对于一类文章,每个用户都有不同的喜好值,我们会想知道某一段时间内注册的用户(标号相连的一批用户)中,有多少用户对这类文章喜好值为k。因为一些特殊的原因,不会出现一个查询的用户区间完全覆盖另一个查询的用户区间(不存在L1<=L2<=R2<=R1)。

 

 

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);
}
}

字符串S由小写字母构成,长度为n。定义一种操作,每次都可以挑选字符串中任意的两个相邻字母进行交换。询问在至多交换m次之后,字符串中最多有多少个连续的位置上的字母相同?

 

以上是关于字节跳动-2018-笔试-01的主要内容,如果未能解决你的问题,请参考以下文章

字节跳动青训营笔试题解

字节跳动青训营笔试题解

字节跳动2020春招笔试 - 研发岗位(JavaC++大数据)

字节跳动2023秋招研发第五场笔试客户端方向

字节跳动2023秋招研发第五场笔试客户端方向

字节跳动2023秋招研发第五场笔试客户端方向