【字节跳动】2019笔试题--豆油瓶

参加了字节的笔试,白天刷了一整天的18年笔试题(其实就做了2题hhh),感觉会用Map<Integer, List>应该能做出至少两题,看到豆油后疯狂思考怎么用Map的套路解决,直至放弃。后灵光乍现,觉Set大法可行,一试通过90%,赶紧换下一题,望字节大佬批卷手下留情。
第一题如下(当时忘记截图了,凭印象形容一下题目吧)

题目:抖音中每两个用户之间互动超过3次即互为豆油瓶(更正一下应该是“豆油瓶”),若用户1与用户2互动超过3次,用户2又与用户3互动超过三次,则用户1与用户3也为豆油瓶。且用户不能与自身互动(即a[i][i] = 0,i=0,1,2,3…)
例1:
输入:
3
0 2 4
2 0 0
4 0 0
输出:2
解析:第一行输入的是数组的大小,即nxn(例1中是3x3),后面n行即为n个用户之间互动的次数(记得似乎是n<1000)
因为数组中下标为1的用户(简称用户1,下同)与用户0互动只有两次,所以用户0是个“独立的豆油瓶”,另外一个豆油瓶包含了用户1,2
例2输入:
4
0 3 4 5
3 0 0 0
4 0 0 0
5 0 0 0
输出:1

Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int[][] arr = new int[num][num];
for (int i = 0; i < num; i++) {
    for (int j = 0; j < num; j++) {
    	//遍历所有的输入存放在二维数组中
        arr[i][j] = scanner.nextInt();
    }
}
Set<Integer> set1 = new HashSet<>();
int count = 0;//豆油瓶数
for (int i = 0; i < num; i++) {
    for (int j = i + 1; j < num; j++) {
    	//遍历数组中每一个值
        if (arr[i][j] >= 3) {
        	//如果arr[i][j]>=3则需要判断是 新的豆油 还是 已存在的某一个豆油集的补充
        	//如果目前的Set中没有i和j,则说明是新的豆油集,否则则是补充
            if (!(set1.contains(i) || set1.contains(j))) {
                count++;
            }
            //set可以去重,所以不用担心重复值
            set1.add(i);
            set1.add(j);

        }
    }
}
//根据观察认为,“独立存在”的豆油瓶这一列/行都为0,如arr[1][]或arr[][1]都是0,则count数需要+1。这里计算没有在set中的用户数left,left就是所说的行/列都为0的“独立豆油”
int left = num - set1.size();
System.out.println(count + left);

考试结束后改进的版本:合并了循环;判断条件中的>3改成了>=3。不知道对不对(坏笑.jpg),心态小崩,刷了一天的算法题,第一题都没有100%通过。(感觉10%没通过就是因为>3的原因,我同学>=3就通过了)

Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int[][] arr = new int[num][num];
Set<Integer> set1 = new HashSet<>();
int count = 0;
for (int i = 0; i < num; i++) {
    for (int j = 0; j < num; j++) {
        arr[i][j] = scanner.nextInt();
        if (arr[i][j] >= 3) {
            if (!(set1.contains(i) || set1.contains(j))) {
                count++;
            }
            set1.add(i);
            set1.add(j);

        }
    }
}
int left = num - set1.size();
System.out.println(count + left);

我踏马是真的菜( ̄_, ̄ )

发布了34 篇原创文章 · 获赞 54 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/Mart1nn/article/details/100067836