携程测开笔试20220830

我只是个测开,为什么要出4道算法题为难我,我的试卷上赫然写着——开发岗!


1、重组偶数
输入
3
13
123
24
输出
-1
132
24
代码(交卷后又改的,之前没a)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] a =new int[n];
        for(int i = 0; i < n; i++){
            a[i] = sc.nextInt();
        }
        for(int i = 0; i < n; i++){
            if(a[i]%2==0){
                System.out.println(a[i]);
            }else {
                int flag=f(a[i]);
                if(flag==-1){
                    System.out.println(-1);
                }
                else{
                    String newNum="";
                    StringBuilder sb=new StringBuilder();
                    String s=String.valueOf(a[i]);
                    for(int j=0;j<s.length();j++){
                        if(j==flag){
                            sb.append(s,0,j);
                            sb.append(s,j+1,s.length());
                            sb.append(s.charAt(flag));
                            System.out.println(sb.toString());
                        }
                    }
                }
            }
        }
    }
    public static int f(int num){
        String s=String.valueOf(num);
        for(int i=0;i<s.length();i++){
            if((int)s.charAt(i)%2==0 && (int)s.charAt(i+1)!=0){
                return i;
            }
            if((int)s.charAt(i)==0){
                return i;
            }
        }
        return -1;
    }
}
2、you
不难,但我写的不够简单(100%
输入
3
1 1 1
2 3 2
1 5 2
输出
2
4
5

import java.util.Scanner;

public class Main1 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int score;
        int[][] a =new int[n][3];
        for(int i=0;i<n;i++){
            for(int j=0;j<3;j++){
                a[i][j]=sc.nextInt();
            }
        }
        for(int i=0;i<n;i++){
            score=0;
            int minn=Math.min(Math.min(a[i][0],a[i][1]),a[i][2]);
            score+=minn*2;
            a[i][1]-=minn;
            if(a[i][1]>1) score+=a[i][1]-1;
            System.out.println(score);
        }
    }
}
4、平滑数列(11%)能力确实不行
输入
3
1 3 4
输出
1

import java.util.*;

public class Main3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] a=new int[n];
        for(int i = 0; i < n; i++) {
            a[i] = sc.nextInt();
        }
        if(n==2){
            System.out.println(0);
        }else{
            int max=0,index=0;
            List<Integer> list=new ArrayList<>();
            for(int i=1;i<n;i++){
                if(max<Math.abs(a[i]-a[i-1])){
                    max=a[i];
                    index=i;
                }
                list.add(Math.abs(a[i]-a[i-1]));
            }
            Collections.sort(list);
            System.out.println(list.get(n-3));
        }
    }
}




#携程笔试##笔经##23届秋招笔面经#
全部评论
请问有收到后续的面试通知吗
点赞 回复 分享
发布于 2022-09-05 20:45 英国
第二题只要先判断三个中的最小值  然后o的个数减去最小值  最后加上 减去的值加1 就可以了
点赞 回复 分享
发布于 2022-08-31 14:47 四川
好难,我一个都做不出来
点赞 回复 分享
发布于 2022-08-31 14:15 陕西

相关推荐

05-12 17:28
已编辑
门头沟学院 硬件开发
ldf李鑫:不说公司名祝你以后天天遇到这样的公司
点赞 评论 收藏
分享
评论
点赞
9
分享

创作者周榜

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