2021-04-11 度小满金融 笔试

时间:2021-04-11 16:00-17:30 (90min)
题型:
一。选择题(25道)60分
大多数是考察的是图的题目

二。编程题(2道)40分
1. 100%
开关电灯
时间限制: 3000MS
内存限制: 589824KB
题目描述:
小A在宾馆打工。一日,小A需要把宾馆一个走廊上n个灯全部关掉。走廊上的灯编号为1~n。宾馆的电路有设计缺陷。宾馆的走廊上有n个开关,第i个开关只可以改变i~n号电灯的状态,即亮的熄灭,熄灭的变亮。 小A一秒按一次开关,一共按了m次。给出小A每次按下的开关编号,请问每一盏灯第一次关掉的时间。一开始,所有灯都是亮着的。
输入描述
输入第一行包含两个数,n,m 接下来一行m个数,代表小A每次按下的开关编号
(n,m≤100000,最后一次按下的开关一定是1号开关。)
输出描述
输出一行n个数,代表每盏电灯最后关掉的时间。
样例输入
4 2
2 1
样例输出
2 1 1 1

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] nm = sc.nextLine().split("\\s+");
        int n = Integer.parseInt(nm[0]);//灯数
        int m = Integer.parseInt(nm[1]);//按下的开关数
        String[] mNum = sc.nextLine().split("\\s+");//每次开关
        int[] k = new int[n];//初始化一个灯的数组
        int count = 1;//次数
        for (String i : mNum) {//模拟开关并记录
            for (int j = Integer.parseInt(i) - 1; j < n; j++) {
                if (k[j] == 0) {
                    k[j] = count;
                }
            }
            count++;
        }
        for (int i : k) {
            System.out.print(i + " ");
        }
    }
}


2. 值有45%的通过了(另外复杂度也比较高),求大佬指教!!
消消乐
时间限制: 3000MS
内存限制: 589824KB
题目描述:
给定一个长度为n的字符串,每个位置表示一种颜色。你有一次机会可以消掉一堆颜色相同并且连续的序列,并且得到这个序列的长度的得分。比如对于字符串aaabbccccc,你可以消掉aaa,可以得到3分,你也可以消掉cccc,得到4分。现在你有k次作弊的机会,每次作弊可以改变字符串中任意一个位置的颜色,比如aaabaac,你可以把第四个位置的b改成a,这样就能从1消到6,当然你也可以不改变任意位置。现在你需要输出最大的得分。
为了方便,每种颜色我们用小写的字母来表示,也就是至多有26种颜色。
输入描述
第一行一个整数n表示字符串的长度和一个整数k表示作弊的次数。(1≤k≤n≤1e6)
第二行一个长度为n并且只包含小写字母的字符串。
输出描述
最大的得分。
样例输入
5 1
aaaba
样例输出
5
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] nk = sc.nextLine().split("\\s+");
        int n = Integer.parseInt(nk[0]);//字符串长度
        int k = Integer.parseInt(nk[1]);//作弊次数
        String s = sc.nextLine();
        int score = 0;//最终得分
        for (int i = 0; i < n - 1; i++) {
            String str = s;
            int scoreTmp = 1;//临时得分
            int K = 0;//作弊次数
            int tmp = i + 1;//记录未作弊位置时候的最大
            for (int j = i + 1; j < n; j++) {
                if (str.charAt(i) == str.charAt(j)) {
                    scoreTmp++;
                } else if (K < k) {//还能作弊
                    if (tmp == i + 1) {
                        tmp++;
                    }
                    K++;
                    str = str.replaceFirst(str.charAt(j) + "", str.charAt(i) + "");
                    scoreTmp++;
                } else {
                    break;
                }
            }
            if (score < scoreTmp) {
                score = scoreTmp;
            }
            i = tmp;
        }
        System.out.println(score);
    }
}



#Java工程师##笔经#
全部评论
第二题leetcode 424
点赞 回复 分享
发布于 2021-04-11 21:24
过了部分样例有分吗
点赞 回复 分享
发布于 2021-04-11 18:13
到底是第一次关掉还是最后一次关掉的时间😪
点赞 回复 分享
发布于 2021-04-11 18:00
为啥前端一道算法都没有,有的题直接给了答案,我是做了假的题嘛????
点赞 回复 分享
发布于 2021-04-11 17:48
太强了
点赞 回复 分享
发布于 2021-04-11 17:46

相关推荐

不愿透露姓名的神秘牛友
昨天 12:31
以前小时候我最痛恨出轨、偷情的人,无论男女,为什么会出轨?现在我成了自己最讨厌的人,没想到分享的东西在牛客会被这么多人看,大家的评价都很中肯,我也认同,想过一一回复,但我还是收声了,我想我应该说说这件事,这件事一直压在我心里,是个很大的心结,上面说了人为什么出轨,我大概能明白了。我们大一下半年开始恋爱,开始恋爱,我给出了我铭记3年的承诺,我对她好一辈子,我永远不会背叛,我责任心太重,我觉得跟了我,我就要照顾她一辈子,我们在一起3年我都没有碰过她,她说往东我就往东,她说什么我做什么,她要我干什么,我就干什么!在学校很美好,中途也出过一些小插曲,比如男闺蜜、男闺蜜2号等等等。但我都强迫她改掉了,我...
牛客刘北:两个缺爱的人是没有办法好好在一起的,但世界上哪有什么是非对错?你后悔你们在一起了,但是刚刚在一起的美好也是真的呀,因为其他人的出现,你开始想要了最开始的自己,你的确对不起自己,21岁的你望高物远,你完全可以不谈恋爱,去过你想要的生活,你向往自由,在一起之后,你要想的不是一个人,而是两个人,你不是变心了,就像你说的,你受够了,你不想包容了,冷静几天是你最优的选择,爱人先爱己。
社会教会你的第一课
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 14:10
啊啊啊啊好幸福,妈妈是我找工作发疯前的一束光
榕城小榕树:你是我见过最幸福的牛客男孩
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
昨天 11:05
门头沟学院 运营
点赞 评论 收藏
分享
评论
4
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务