首页 > 其他分享 >腾讯2024实习生在线笔试-0331

腾讯2024实习生在线笔试-0331

时间:2024-03-31 22:32:17浏览次数:31  
标签:链表 arr ListNode int 笔试 2024 sc new 0331

Q1 小红的图上染色

小红拿到了一个无向图,其中一些边被染成了红色。

小红定义一个点是“好点”,当且仅当这个点的所有邻边都是红边。

现在请你求出这个无向图“好点”的数量。

注:如果一个节点没有任何邻边,那么它也是好点。

输入描述

第一行输入两个正整数n,m ,代表节点的数量和边的数量。

接下来的m行,每行输入两个正整数u, v和一个字符chr,代表节点 u 和节点v 有一条边连接。如果 chr 为’R’,代表这条边被染红;’W’代表未被染色。

1 <= n, m <= 10^5 1 <= u, v <= n

输出描述

一个整数,代表“好点”的数量。

示例 1

输入

4 4
1 2 R
2 3 W
3 4 W
1 4 R

输出

1

 

说明

只有 1 号节点是好点

我的代码

package oj1;

import java.util.Scanner;

/**
 * @Description
 * @Author chenyi0008
 * @Date 2024/3/31
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); // 节点
        int m = sc.nextInt(); // 边
        boolean[] arr = new boolean[100010];
        int a, b;
        String c;
        for (int i = 0; i < m; i++) {
            a = sc.nextInt();
            b = sc.nextInt();
            c = sc.next();
            if(c.equals("W")){
                arr[a] = true;
                arr[b] = true;
            }
        }
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            if(arr[i] == false)sum ++;
        }
        System.out.println(sum);
    }
}

通过100%

这题没啥难 会分析就行

Q2 小红的链表断裂

小红拿到了一个链表。她准备将这个链表断裂成两个链表,再拼接到一起,使得链表从头节点到尾部升序。你能帮小红判断能否达成目的吗?

给定的为一个链表数组,你需要对于数组中每个链表进行一次“是”或者“否”的答案回答,并返回布尔数组。

每个链表的长度不小于 2,且每个链表中不包含两个相等的元素。所有链表的长度之和保证不超过10^5

示例 1

输入

[{1,2,3},{2,3,1},{3,2,1}]

输出

[true,true,false]

 

说明

第三个链表无论怎么操作都不满足条件。

我的代码

package oj2;

/**
 * @Description
 * @Author chenyi0008
 * @Date 2024/3/31
 */
public class Solution {
    public static void main(String[] args) {
        ListNode l11 = new ListNode(1);
        ListNode l12 = new ListNode(2);
        ListNode l13 = new ListNode(3);
        ListNode[] listNodes = new ListNode[1];
        l11.next =l12;
        l12.next = l13;
        listNodes[0] = l11;

        Solution solution = new Solution();
        boolean[] booleans = solution.canSorted(listNodes);
        for (boolean aBoolean : booleans) {
            System.out.println(aBoolean);
        }
    }

    public boolean[] canSorted (ListNode[] lists) {
        int len = lists.length;
        boolean[] ans = new boolean[len];

        for (int i = 0; i < lists.length; i++) {
            ListNode node = lists[i];
            boolean flag = false;
            boolean ji = false;
            int first = node.val;
            int tmp = node.val;
            while (node.next != null){
                node = node.next;
                if(tmp > node.val && flag == false){
                    flag = true;
                }else if(tmp > node.val && flag == true){
                    ji = true;
                    break;
                }
                tmp = node.val;
            }

            if(!ji && first > tmp || flag == false) ans[i] = true;
//            if(ji) ans[i] = false;
        }

        return ans;
    }
}

通过100%

没啥难的,主要是花在debug的时间有点长

Q3 小红的连通图

小红拿到了一个有n个节点的无向图,这个图初始并不是连通图。

现在小红想知道,添加恰好一条边使得这个图连通,有多少种不同的加边方案?

输入描述

第一行输入两个正整数n, m,用空格隔开。

接下来的m行,每行输入两个正整数u,v,代表节点u和节点v之间有一条边连接。

1 <= n, m <= 10^5

1 <= u, v <= n

保证给出的图是不连通的。

输出描述

一个整数,代表加边的方案数。

示例 1

输入

4 2
1 2
3 4

 

输出

4

 

说明

添加边 (1,3) 或者 (1,4) 或者 (2,3) 或者 (2,4) 都是可以的。

示例 2

输入

4 1
1 3

 

输出

0

 

说明

无法变成连通图

我的代码

package oj3;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Scanner;

/**
 * @Description
 * @Author chenyi0008
 * @Date 2024/3/31
 */
public class Main {

    static int[] arr;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();

        arr = new int[n + 1];
        for (int i = 1; i < arr.length; i++) {
            arr[i] = i;
        }

        for (int i = 0; i < m; i++) {
            int a = sc.nextInt();
            int b = sc.nextInt();
            if(find(a) != find(b)){
                if(arr[a] == a)arr[a] = find(b);
                else if(arr[b] == b)arr[b] = find(a);
            }
        }
        for (int i = 1; i <= n; i++) {
            arr[i] = find(i);
        }

        HashSet<Integer> set = new HashSet<>();
        HashMap<Integer, Integer> map = new HashMap<>();
        int[] tmp = new int[100];
        int sum = 0;


        for (int i = 1; i < arr.length; i++) {
            int father = find(arr[i]);
            if(!set.contains(father)){
                sum ++;
                tmp[sum] = father;
                set.add(father);
                map.put(father, 1);
            }else {
                Integer value = map.get(father);
                map.put(father, value + 1);
            }
            if(sum > 2){
//                System.out.println("超出");
                System.out.println(0);
                return;
            }
        }

        System.out.println(map.get(tmp[1]) * map.get(tmp[2]));

//        System.out.println(sum);



    }

    public static int find(int i){
//        while (arr[i] != i){
//            arr[i] = find(arr[i]);
//            if(arr[i] == find(arr[i]))return arr[i];
//        }
        if(arr[i] != i)arr[i] = find(arr[i]);
        return arr[i];
    }



}

通过率100%

做题的时候想不起来并查集的模板,自己在那研究了好久才发现写的代码有问题

Q4 小红的数组分割

小红拿到了一个数组,她准备将数组分割成k段,使得每段内部做按位异或后,再全部求和。小红希望最终这个和尽可能大,你能帮帮她吗?

输入描述

输出描述

输出一个正整数,表示最终的最大和。

示例 1

输入

6 2
1 1 1 2 3 4

 

输出

10

 

说明

示例 2

输入

5 3
1 0 1 1 0

输出

3

示例 3

输入

3 3
1 1 2

 

输出

4

我的代码

有思路但是没写完,一眼看出dp

标签:链表,arr,ListNode,int,笔试,2024,sc,new,0331
From: https://blog.csdn.net/m0_61594817/article/details/137210842

相关文章

  • 2024年春季学期《算法分析与设计》练习5
    问题A:随机数题目描述有一个rand(n)的函数,它的作用是产生一个在[0,n)的随机整数。现在有另外一个函数,它的代码如下:intrandom(intn,intm){        returnrand(n)+m;}显而易见的是函数random(n,m)可以产生任意范围的随机数。现在问题来了,如果我想要......
  • 北京电子科技学院2024密码保密与网络对抗宣传赛WP
    个人赛20211108_俞振阳排名第六名解题思路ctf1签到题类型:Misc文件最后出现明显字符提示,尝试base64编码flag{ae9603a1-a905-f9be-5143-660bac605401}ctf5伪装者类型:Web尝试注入此ip值curl-H"X-Forwarded-For:1.1.1.1"http://39.106.48.123:13504/flag{4404......
  • 史上最全Java核心面试题(带全部答案)2024年最新版
    今天要谈的主题是关于求职,求职是在每个技术人员的生涯中都要经历多次。对于我们大部分人而言,在进入自己心仪的公司之前少不了准备工作,有一份全面细致面试题将帮助我们减少许多麻烦。在跳槽季来临之前,特地做这个系列的文章,一方面帮助自己巩固下基础,另一方面也希望帮助想要换工......
  • 2024-03-31
    2024-03-31讲课提到的很有道理啊,确实很常见在窗口的星星里面就用到了还有一个小技巧求区间0的个数不好做有的时候满足所有数非负转化成求区间最小值是不是0和区间最小值的个数就行了这两天讲课的时候还经常提到·修改和查询的复杂度不平衡的时候,把他平衡会更优秀......
  • 0324-0331题解反思
    最近我突然发现,写题解是常常会遗忘的,然而题目中的一些技巧才是永恒的,那么接下来的题解,我应该对以前的题目含有的这些技巧进行一些深刻的复盘。知识点模块1.当我们要实现一个图形的字符串的倒置,比如把福倒过来,我们可以进行以下的操作:先进行行的交换,在进行列的倒置,我们需要用到s......
  • 2024 python毕业设计(论文)- python毕设选题大全 - 选题指导精编版
    目录前言python毕设选题开题指导建议更多精选选题选题帮助最后前言大家好,这里是海浪学长毕设专题!大四是整个大学期间最忙碌的时光,一边要忙着准备考研、考公、考教资或者实习为毕业后面临的升学就业做准备,一边要为毕业设计耗费大量精力。学长给大家整理了计算机专......
  • q1-投资理财-2024.3.31
    q1-投资理财-2024.3.31​ 接上回,持有的徐工机械,一边下跌一边加仓,截止到5.86清仓想全仓做t,等第二天下跌下来再买入,没想到直接高开6个点,望尘莫及,亏死。​ 盈利的基本不去动了,亏损的等以后看看能不能想办法搞回来,传智资金到12-13左右就资金一直在流出,这玩应,我发现资金流入的很有......
  • 2024联合省选游记
    2024联合省选游记省选是\(3/2\)到\(3/3\),笔者写这篇文章的时候已经是三月底了,愚人节比赛刚结束没多久。为什么拖了这么久呢?初三的生活太过忙碌,让人失去了反思与字自省的意识。听我的教练说,优秀的\(OI\)选手都是有规划的,他们知道自己的水平,以及奋斗的方向。就像长途旅行前的......
  • 强烈推荐:2024 年12款 Visual Studio 亲测、好用、优秀的工具,AI插件等
    工具类扩展1.ILSpy2022(免费)ILSpy是ILSpy开源反编译器的VisualStudio扩展。是一款开源、免费的、且适用于.NET平台反编译【C#语言编写的程序和库(.dll)内容】工具;可以集成在VisualStudio开发工具中,能够十分快捷方便的查看源代码内容。其中包括:1.项目案例2.NuGet......
  • FL Studio20.0中文汉化包补丁器下载2024最新版本
    FLStudio官方中文版已经上线,FLStudio20.8版本起开始支持简体中文,但推荐使用windows10系统安装,Windows7系统设置FLStudio语言为中文时若出现乱码,可以将Win10系统中的“微软雅黑”字体复制并安装进Win7系统电脑中!FLStudio20.8.2版本更新后支持Rosetta2,在Rosetta的支持......