美团2021年3月13日笔试(技术综合-后台方向)1-2

1、翻转矩阵

b[j,i]=a[i,j]
输入:1、n+1行
2、第一行 n,m表示n行m列矩阵
3、下面有n行,每行有m个整数
输出:m*n矩阵
输入:3 2
1 2
3 4
5 6
输出:1 3 5
2 4 6
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] first = new int[2];
        while (sc.hasNext()){
            for (int i = 0; i <2 ; i++) {
                first[i] = sc.nextInt();
            }
            break;
        }
        int n = first[0],m = first[1];

        int[][] omat = new int[n][m];
        for (int i = 0; i <n ; i++) {
            while (sc.hasNext()){
                for (int j = 0; j < m; j++) {
                    omat[i][j] = sc.nextInt();
                }
                break;
            }
        }

        int[][] res =solver(n,m,omat);
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print(((res[i][j])+" "));
            }
            System.out.println();
        }




    }
    public static int[][] solver(int n,int m,int[][] mat){
        int[][] res = new int[m][n];

        for (int i = 0; i < n ; i++) {
            for (int j = 0; j < m; j++) {
                res[j][i] = mat[i][j];
            }
        }
        return res;

    }



}

2、提取数字

从给定的字符串中提取数字并排序

输入:字符串
输出:k行数字
输入:as154kd12
输出:154
12

1、判断是否是数字

0<=s.charAt(i)-'0'<=9

2、使用双指针,第一个指向数字的起始索引,第二个指向数字的结束索引

字符串长度为n
f=b=0
while(f<n&&b<n){
如果 s.charAt(f)是数字
从f开始遍历字符串,停在非字符串处或字符串末尾得到数字结束索引并更新初始索引
如果不是数字
f+=1
}

3、计算数字大小

ans=0;
from f to b
ans = ans*10+s.charAt(i)-'0'

4、排序

Array.sort(arr)
package 三月十三.提取数字;

import java.util.Arrays;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;

public class Main {


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        solve(s);





    }

    public static void solve(String s){



        int n = s.length();
        int first=0;
        int second=0;
        Deque<int[]> deq = new LinkedList<>();

        while(second<n&&first<n){

            int[] index = new int[2];

            if(s.charAt(first)-'0'<=9){
                index[0]=first;
                for (second = index[0]; second < n ; second++) {
                    if (first==n-1){
                        index[1] = first;
                        break;
                    }

                    if (s.charAt(second)-'0'>9){
                        index[1] = second-1;
                        first = second;
                        break;
                    }
                    if (s.charAt(second)-'0'<=9&& second==n-1){
                        index[1] = second;
                    }

                }
                deq.push(index);
            }
            first +=1;

        }


        int[] res =new int[deq.size()];
        int in =0;
        while(!deq.isEmpty()){

            int[] ind = deq.pop();
            int i_first = ind[0];
            int b_second = ind[1];

            int ans = 0;

            for (int i = i_first; i <= b_second; i++) {
                //ans = s.charAt(i)-'0';
                ans = 10*ans + (s.charAt(i)-'0');

            }
            res[in] = ans;
            in+=1;
        }
        Arrays.sort(res);
        for (int j = 0; j < res.length; j++) {

            System.out.println(res[j]);
        }


    }


}





#笔试题目##美团#
全部评论
排序太麻烦了,直接用ArrayList<String>,然后用Collections.sort方法排序(PS:我也才发现可以直接对字符串数字进行排序)
点赞 回复 分享
发布于 2021-03-13 21:54
可以使用本地IDE吗?
点赞 回复 分享
发布于 2021-03-20 14:10
请问只有这么两个编程题吗
点赞 回复 分享
发布于 2021-04-09 23:18

相关推荐

最近又搬回宿舍了,在工位坐不住,写一写秋招起伏不断的心态变化,也算对自己心态的一些思考表演式学习从开始为实习准备的时候就特别焦虑,楼主一开始选择的是cpp后端,但是24届这个方向已经炸了,同时自己又因为本科非92且非科班,所以感到机会更加迷茫。在某天晚上用java写出hello&nbsp;world并失眠一整晚后选择老本行干嵌入式。理想是美好的,现实情况是每天忙但又没有实质性进展,总是在配环境,调工具,顺带还要推科研。而这时候才发现自己一直在表演式学习,徘徊在设想如何展开工作的循环里,导致没有实质性进展。现在看来当时如果把精力专注在动手写而不是两只手端着看教程,基本功或许不会那么差。实习的焦虑5月,楼主...
耶比:哲学上有一个问题,玛丽的房间:玛丽知道眼睛识别色彩的原理知道各种颜色,但是她生活在黑白的房间里,直到有一天玛丽的房门打开了她亲眼看到了颜色,才知道什么是色彩。我现在最大可能的减少对非工作事情的思考,如果有一件事困扰了我, 能解决的我就直接做(去哪里或者和谁吵架等等……),解决不了的我就不想了,每一天都是最年轻的一天,珍惜今天吧
投递比亚迪等公司10个岗位 > 秋招被确诊为…… 牛客创作赏金赛
点赞 评论 收藏
分享
10-15 03:05
门头沟学院 Java
CADILLAC_:凯文:我的邮箱是死了吗?
点赞 评论 收藏
分享
11-04 21:17
江南大学 Java
穷哥们想卷进大厂:肯定会问技术呀,面试你的可能是别人
点赞 评论 收藏
分享
评论
2
3
分享
牛客网
牛客企业服务