美团后端笔试

2023-05-16

文章目录

整场笔试下来,整体难度一般,只不过在第三题扑克牌游戏的时候进行的不是很顺利,附加题难度一般,不知道有没有小伙伴和我一样时间耗费在第三题上面的。

1.魔法外卖

题目描述:

炸鸡店拥有一名会传送魔法的外卖派送员。

该外卖派送员派送单子时,可以消耗时间t来正常派送单子(一次只能派送一个单子,不能多个同时派送),也可以使用魔法不耗费时间地隔空瞬间投送。

现在炸鸡店在时刻0接收到了若干炸鸡订单,每个单子都有它的截止送达时间。外卖派送员需要保证送达时间小于等于这个截止时间。

现在询问外卖员最少要使用几次魔法来保证没有外卖超时。

输入描述:

第一行两个正整数n, t 以空格分开,表示当前接到了n个订单,外卖员在不使用魔法的情况下正常派送所需要消耗的时间t。

第二行n个正整数,每个正整数表示一个订单的截止送达时间。

1 <= n <= 1e5, 1 <= t <= 100, 订单的送达时间介于[1, 1e7]之间

输出描述:

一行一个非负整数,表示外卖员最少需要使用的魔法次数。

样例输入

6 5

5 6 7 8 9 10

样例输出

4

这道题目思路很简单,我们只需要保证自己送完前一个的时间+t(送下一个外卖消耗的时间)小于等于下一个外卖的截止时间即可。

代码如下:

import java.util.Arrays;
import java.util.Scanner;

public class 魔法外卖 { 
    public static void main(String[] args) { 
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int t = scanner.nextInt();
        int[] times = new int[n];
        for (int i = 0; i < times.length; i++) { 
            times[i] = scanner.nextInt();
        }
        Arrays.sort(times);
        int num = 0;
        int time = 0;
        for (int i = 0; i < times.length; i++) { 
            //送完前一个的时间+t小于等于下一个的截止时间,就不用魔法
            if (time + t <= times[i]) { 
                time += t;
            } else { 
                num++;
            }
        }
        System.out.print(num);
    }

}

2.打扫房间

题目描述:

你买了一个扫地机器人,你想要知道这个扫地机器人是否能够将房间打扫干净。

为了简化问题,我们不妨假设房间被划分为nm的方格。定义打扫干净为这nm的方格全部被打扫过至少一次。

你为扫地机器人下达了若干指令。每个指令为上下左右移动中的一种。机器人会将经过的路径上的方格打扫干净。

初始时假设机器人处于第一行第一列的方格中。这个方格初始时会被机器人直接打扫干净。

现在询问你机器人能否将房间打扫干净,能则输出Yes,不能则输出No。

对于Yes的情况下,还要求你继续输出到哪个指令结束后,房间就打扫干净了。

对于No的情况下,还要求你输出还有多少个地块没有打扫干净。

保证机器人在打扫的过程中不会越过房间边界。换句话说机器人始终保持在n*m的方格图中。

输入描述

第一行三个正整数n, m, k,以空格分开,表示房间大小n*m,接下来会有长度为k的指令。

第二行长度为k的一个字符串。字符串中仅有下面四种字符(注意:均为大写)

  • W:表示下一步机器人将向上移动
  • A:表示下一步机器人将向左移动
  • S:表示下一步机器人将向下移动
  • D:表示下一步机器人将向右移动

保证2 <= n, m <= 100, 指令长度 <= 100000

输出描述

第一行一个字符串Yes或No表示能否打扫干净

对于Yes的情况,第二行输出一个正整数,表示在第几个指令之后已经打扫干净了。

注意指令编号从1开始而不是0。

对于No的情况,第二行输出一个正整数,表示还剩几个地块没有打扫。

样例输入

2 2 5

SDWAS

样例输出

Yes

3

这道题题目很长,我给大家简单翻译一下,就是说机器人从[0,0]这个位置出发,默认[0,0]这个位置是初始时就被打扫干净的,然后按照我们输入的WASD的指令,上下左右移动,然后判断在有限的指令步数里能不能打扫干净

  • 如果能打扫干净,我们需要输出Yes,同时输出对应执行到哪个指令 ,从1开始计数
  • 如果不能打扫干净,我们需要输出No,同时输出还剩几块没有打扫的

这道题目有几点需要我们注意:

  • 1.如果指令的长度<地板的数量-1(因为[0,0]这个位置初始时是干净的,需要打扫的数量是n*m-1),那么一定不能打扫干净
  • 2.如果指令的长度>=地板数量-1,那么也不一定能打扫完,因为有些指令到达的位置很可能是已经打扫过的,所以我们还需记录一下已经被打扫过的位置。

代码如下:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class 打扫房间 { 
    public static boolean containsVal(List<int[]> list, int i, int j) { 
        for (int k = 0; k < list.size(); k++) { 
            int[] t = list.get(k);
            if (t[0] == i && t[1] == j) { 
                return true;
            }

        }
        return false;
    }

    public static void main(String[] args) { 
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int k = sc.nextInt();
        String operation = sc.next();
        char[] opt = new char[k];
        for (int i = 0; i < k; i++) { 
            opt[i] = operation.charAt(i);
        }
        if (k + 1 < n * m) { //一定打扫不完
            System.out.println("No");
            System.out.println(n * m - k - 1);
        } else { 
            int count = 1;//已经被打扫干净的数量
            Integer lastOp = 0;//最后一次执行的指令
            List<int[]> list = new ArrayList<>();
            list.add(new int[]{ 0, 0});//初始位置已经被打扫
            int i = 0, j = 0;//初始值

            for (char op : opt) { 
                switch (String.valueOf(op)) { 
                    case "W"://向上
                        if (i - 1 >= 0) { 
                            i -= 1;
                            int[] t = new int[]{ i, j};
                            if (!containsVal(list, i, j)) { 
                                count++;
                                list.add(t);
                            }
                        }

                        break;
                    case "A"://向左
                        if (j - 1 >= 0) { 
                            j -= 1;
                            int[] t = new int[]{ i, j};
                            if (!containsVal(list, i, j)) { 
                                count++;
                                list.add(t);
                            }
                        }

                        break;
                    case "S"://向下
                        if (i + 1 < n) { 
                            i += 1;
                            int[] t = new int[]{ i, j};
                            if (!containsVal(list, i, j)) { 
                                count++;
                                list.add(t);
                            }
                        }

                        break;
                    case "D"://向右
                        if (j + 1 < m) { 
                            j += 1;
                            int[] t = new int[]{ i, j};
                            if (!containsVal(list, i, j)) { 
                                count++;
                                list.add(t);
                            }
                        }

                        break;
                }
                lastOp++;
                if (count >= m * n) { 
                    break;
                }
            }
            if (count >= m * n) { 
                System.out.println("Yes");
                System.out.println(lastOp);
            } else { 
                System.out.println("No");
                System.out.println(n * m - list.size());
            }

        }

    }

}

3.扑克牌游戏

题目描述:

Alice和Bob在玩一个游戏。有n张卡牌,点数分别为1到n。进行洗牌后,n张牌从上到下叠放形成一个牌堆。

每次Alice先将当前牌堆顶的一张牌放到牌堆底,然后Bob再将当前牌堆顶的一张牌放到牌堆底。(特别地,当牌堆中只有一张牌时,相当于不进行任何操作)接着,他们会翻开当前牌堆顶的牌,并记下它的点数。

当所有牌都被翻开后,他们也记下了n个点数。现在他们想根据记下的这个序列来还原一开始的牌(从牌堆顶到牌堆底每一张牌的点数)。

输入描述:

第一行是一个正整数n,表示有n张牌。

接下来一行n个用空格隔开的正整数,第i个数a_i表示第i张被翻开的牌的点数。

1<=n<=100000

输出描述:

一行n个用空格隔开的正整数,第i个数表示初始牌堆中从牌堆顶到牌堆底的第i张牌的点数。

样例输入:

样例输出:

4 2 1 3

这道题目做了很久,因为一直想着通过递归剪枝的方法去尝试还原初始牌的点数,后来仔细分析了一下,是我想多了,也想错了,题目本身就已经 暗示着我们使用队列来进行处理,所以我们就按照出题人的思路,通过 双端队列+反向模拟 就可以很轻松的解决

为了防止大家看不懂里面的部分指令,给大家先复习一下:

其中Queue就是我们的普通队列,和双端队列Deque不同的是,它不支持从队头添加元素以及从队尾删除元素。

对于这道题目,题目给出的顺序是从a[]数组的0号位置开始,按顺序将两张牌依次放在a[]数组的最后面,然后在抽出一张牌,记录点数,我们只需翻过来,从a[length-1]开始的位置,进行同样的操作,即从队尾依次抽出两张放在队头,然后再抽出一张牌,那么这张牌对应的便是真实的位置。

代码如下:

import java.util.*;

public class 扑克牌游戏 { 
    public  static  void  main(String[] args)  { 
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] cards = new int[n];
        for (int i = 0; i < n; i++) { 
            cards[i] = scanner.nextInt();
        }
        int[] origin = new int[n];
        Deque<Integer> deque = new LinkedList<Integer>();
        for (int i = 0; i < n; i++) { 
            deque.offerLast(n - i - 1);
        }
        for (int i = 0; i < n; i++) { 
            deque.offerFirst(deque.pollLast());
            deque.offerFirst(deque.pollLast());
            //反向操作,现在索引是正向的
            origin[deque.pollLast()] = cards[i];
        }
        for (int i : origin) { 
            System.out.print(i + " ");
        }

    }

}

4.三元组变形问题

题目描述:

给一个长度为n的序列a[1], a[2], …, a[n],请问有多少个三元组(i,j,k)满足i<j<k且a[i]-a[j]=2a[j]-a[k]?输出符合要求的三元组的数量。

输入描述:

第一行是一个整数n,表示序列长度为n。

接下来一行n个用空格隔开的整数,a[i]表示序列的第i个数。

1<=n<=4000, 0<=a[i]<=1000000

输出描述:

一行一个整数,表示符合要求的三元组数量。

样例输入:

样例输出:

3

我第一次拿到这个题目,直接使用三个for循环,主要是看看通过率多少,如果比较通过率较高的话就直接直接下一题了,结果发现才70%,然后又简单优化了一下,优化的方式也很简单,我们知道了i,j,就可以计算a[k]的值,这样的话时间复杂度就由原来的o(n^3) 变为o(n^2),但是通过率仍然不是百分之百,但是也提高到了95%,有更好的办法的小伙伴直接评论区给大家长长见识。

package com.exercise.leetecode.problem.美团;

import java.util.*;

public class 三元组变形问题 { 

    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();
        }
        int count = 0;
        Map<Integer, Integer> map = new HashMap<>();
        for (int k = 0; k < n; k++) { 
            map.put(a[k], map.getOrDefault(a[k], 0) + 1);
        }

        for (int i = 0; i < n - 2; i++) { 
            map.put(a[i], map.getOrDefault(a[i], 0) - 1);
            Map<Integer, Integer> cpMap = new HashMap<>(map);
            for (int j = i + 1; j < n - 1; j++) { 
                cpMap.put(a[j], cpMap.getOrDefault(a[j], 0) - 1);
                int restNum = 2 * a[j] - a[i] + a[j];
                count += cpMap.getOrDefault(restNum, 0);
            }

        }
        System.out.println(count);
    }

}

附加题:树的分支最大值

题目描述:

给一棵有n个节点的二叉树,节点的编号从1到n。

其中,节点k的左儿子为节点2 k(当2 k大于n时,不存在左儿子)

节点k的右儿子为节点2 k+1(当2 k+1大于n时,不存在右儿子)

该二叉树的根节点为节点1。

对于每个节点,节点上有一些金钱。

现在你可以从根节点1开始,每次选择左儿子或者右儿子向下走,直到走到叶子节点停止,并获得你走过的这些节点上的金钱。

你的任务是求出你可以获得的最大的金钱总量。

输入描述:

第一行是一个正整数n,表示二叉树上总共有n个节点。

第二行有n个正整数,第i个正整数表示节点i上有多少数量的金钱。

1 <= n <= 100000

对所有数据保证:单个节点上的金钱数量在 [1, 1000] 之间

输出描述:

一行一个正整数,表示你所能获得的最大的金钱总量

样例输入:

3

5 7 8

样例输出:

13

这道附加题的难度都不如第三道题的难度,如果有因为在前面浪费时间太多而导致没有做这道题的小伙伴真的是可惜了呀。

这道题我们也无需构造树状结构,因为左右子树的特征很明显,只需层次遍历即可。

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class 树的分支最大值 { 

    public  static  void  main(String[] args)  { 
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();//结点个数
        int[] moneys = new int[n + 1];
        for (int i = 1; i <= n; i++) { 
            moneys[i] = sc.nextInt();
        }
        int[] dp = new int[n + 1];
        Queue<Integer> queue = new LinkedList<>();
        queue.add(1);
        int count = 0;
        while (!queue.isEmpty()) { 
            int index = queue.poll();
            count++;
            if (index == 1) { //说明是根节点
                dp[index] = moneys[index];
            } else if (index % 2 == 0) { //说明是左子树
                dp[index] = dp[index / 2] + moneys[count];
            } else { //说明是右子树
                dp[index] = dp[(index - 1) / 2] + moneys[count];
            }
            if (index * 2 <= n) { 
                queue.add(index * 2);
            }
            if (index * 2 + 1 <= n) { 
                queue.add(index * 2+1);
            }
        }
        //找最大值
        int ans = dp[1];
        for (int i : dp) { 
            ans = Math.max(i, ans);
        }
        System.out.println(ans);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

美团后端笔试 的相关文章

  • Ubuntu 设置su密码

    在使用su命令获取超级权限的时候提示输入密码 xff0c 在安装ubuntu的时候只设置了用户密码 xff0c 没记得有其他密码 这里需要给root用户重新设置密码 xff1a sudo passwd 然后输入密码即可
  • Spark MLlib学习(二)——分类和回归

    MLlib支持多种分类方法 xff0c 如二分类 多分类和回归分析等 问题类型 支持的方法 二分类 线性SVM 逻辑回归 xff0c 决策树 xff0c 随机森林 xff0c GBDT xff0c 朴素贝叶斯 多分类 决策树 xff0c 随
  • 关于onNewIntent你应该知道的

    一 API描述如下 大概意思是当Activity被设以singleTop模式启动 xff0c 当需要再次响应此Activity启动需求时 xff0c 会复用栈顶的已有Activity xff0c 还会调用onNewIntent方法 并且 x
  • 程序猿的情话

    世界上最遥远的距离 xff0c 是我在if里你在else里 xff0c 似乎一直相伴又永远分离 xff1b 世界上最痴心的等待 xff0c 是我当case你是switch xff0c 或许永远都选不上自己 xff1b 世界上最真情的相依 x
  • SpringBoot JPA实践之EntityManage查询返回自定义DTO

    在很多时候我更喜欢随意组合查询出来返回一个DTO对象的实现 xff0c JPA提供的多数查询均以返回Entity居多 xff0c 它提供的EntityManager对象可以实现将SQL语句查询的结果转换为自定义DTO对象 xff08 这与
  • 经典编程书籍(C++, 网络, Windows, Linux)【转载】

    书单中列举的都是相关领域的经典书籍 xff0c 必读之作 此书单的编辑参考了很多网站 xff0c 包括一些名家的推荐 xff0c 例如侯捷 xff0c 孟岩 xff0c 荣耀 xff0c 潘爱民等等 xff0c 在此也向这些前辈表示感谢 1
  • SpringBoot微服务框架概述

    SpringBoot微服务框架 2 Spring Boot 微服务框架的特点3 Spring Boot 应用场景4 SpringBoot的第一个应用5 Springboot引导类的main方法有什么作用 xff1f 6 SpringBoot
  • 使用Spring的注解方式实现AOP

    Spring对AOP的实现提供了很好的支持 下面我们就使用Spring的注解来完成AOP做一个例子 首先 xff0c 为了使用Spring的AOP注解功能 xff0c 必须导入如下几个包 aspectjrt jar aspectjweave
  • 如何正确有效的学习一门计算机语言?

    在这个互联网高速发展的社会 xff0c 越来越多的人喜欢上了IT行业 xff0c 认为计算机行业是一个高科技的 高薪的行业 的确如此 xff0c 但是系统的学习一门计算机语言 xff0c 并且把它用运用到真正的开发中去还真不是一件简单的事情
  • (二)为AI和机器学习创建Docker容器

    目录 介绍 基本镜像 创建Dockerfile 构建镜像 运行容器 总结 下载源文件 154 4 KB 介绍 Docker 等容器技术显着简化了软件的依赖管理和可移植性 在本系列文章中 xff0c 我们探讨了 Docker 在机器学习 ML
  • 自定义EF Core迁移历史记录表

    目录 背景 更改表名称和架构 更改列名称 添加具有默认值的列 添加必填列 关于代码示例 引用 下载源代码 13 9 KB 背景 实体框架核心通过在名为 EFMigrationsHistory 和架构 dbo 的表中添加日志来跟踪应用的迁移
  • 使用EF Core 6执行原始SQL查询

    目录 背景 现有选项 ExecuteSqlRaw 插入 更新 删除 FromSqlRaw FromSqlInterpolated 自定义数据库上下文扩展方法 ExecuteScalar ExecuteNonQuery FromSqlQuer
  • 仓库更新了,git pull拉取远端失败

    仓库更新了 span class token punctuation span git pull拉取远端失败 span class token operator span error span class token operator sp
  • xPath 用法总结整理

    最近在研究kafka xff0c 看了一堆理论的东西 xff0c 想动手实践一些东西 xff0c 奈何手上的数据比较少 xff0c 突发奇想就打算写个爬虫去抓一些数据来玩 xff0c 顺便把深入一下爬虫技术 之前写过一些小爬虫 xff0c
  • vi编辑器

    目录 简介 基本操作 1 移动光标 2 定位 3 删除 4 复制 5 查找
  • 使用libevent搭建简单http服务器

    64 使用libevent搭建简单http服务器 一 libevent 的下载 可通过官网直接进行下载libevent库 xff1b 例子使用的是V2 1 1版本 xff0c 下载完成后 xff0c 解压 xff1b 可以再解压目录下获取
  • C++动态链接库中的全局变量面试题

    其实主要问题是三个模块 xff1a 模块 a 静态库 a 模块 b 二进制 b 静态引用a 动态加载c 模块 c 动态链接库c 静态引用a 关键在于静态库a里有一个静态全局变量 xff0c 没错就是我们的日志模块 原先的这个静态的模块中的静
  • Linux 桌面修改文件mime类型图标

    在多数的Linux发行版中 xff0c 默认的桌面的文件类型图标着实不好看 xff0c 比如我常用的Linux之一Debian xff0c 默认文件类型图标就很不好看 如果我们自定义了一种mime类型的话肯定也是没有图标的啦 xff0c 下
  • 比 MyBatis 快了 100 倍

    比 MyBatis 效率快 100 倍的条件检索引擎 xff0c 天生支持联表 xff0c 使一行代码实现复杂列表检索成为可能 xff01 2开源协议 使用Apache 2 0开源协议 3界面展示 你的产品给你画了以上一张图 xff0c 还
  • 【GIT】GIT基础教程(新手必看)

    准备工作 1 首先要下载git xff0c git官网下载比较缓慢 xff0c 这里提供一个淘宝镜像的网站 https npm taobao org mirrors git for windows 里边有各种版本的git xff0c 选择与

随机推荐

  • Python常见内置类属性介绍

    文章目录 64 TOC 文章目录 什么是内置类属性一 dict 的用法二 name 的用法三 file 的用法 什么是内置类属性 当python创建一个类之后 xff0c 系统就自带了一些属性 xff0c 叫内置类属性 这些属性名用双下划线
  • win32应用程序和win32控制台应用程序

    win32应用程序是有窗体的 xff08 当然也可以没有 xff09 xff0c 有Windows消息循环机制的 而win32控制台应用程序只是在控制台下运行的程序 xff0c 类似以前dos的程序 Win32 Application和Wi
  • springBoot 启动指定配置文件环境多种方案

    springBoot 启动指定配置文件环境理论上是有多种方案的 xff0c 一般都是结合我们的实际业务选择不同的方案 xff0c 比如 xff0c 有pom xml文件指定 maven命令行指定 配置文件指定 启动jar包时指定等方案 xf
  • tigervnc黑屏及mate-session缺失

    1 项目信息 host os xff1a Kylin Server V10 arm64 2022 04 29 2 问题描述及原因分析 通过一下命令安装vnc server yum install tigervnc server 然后通过vn
  • (Java)集合工具类:Collections

    文章目录 一 Collections 简介二 Collections 操作实例1 实例操作一 xff1a 返回不可变的集合2 实例操作二 xff1a 为集合增加内容3 实例操作三 xff1a 反转集合中的内容4 实例操作四 xff1a 检索
  • Seata快速开始

    Seata分TC TM和RM三个角色 xff0c TC xff08 Server端 xff09 为单独服务端部署 xff0c TM和RM xff08 Client端 xff09 由业务系统集成 Seata Server 部署 步骤一 xff
  • 点击Anaconda中的Jupyter Notebook无法打开浏览器

    解决方法一 xff1a 通过修改配置文件来指定浏览器打开notebook 步骤 xff1a 打开anaconda promote 输入 xff1a jupyter notebook generate config 输出结果 xff1a Wr
  • 深度学习——入门经典案例《波士顿房价预测》深度解析

    一 深度学习 机器学习算法理论在上个世纪90年代发展成熟 xff0c 在许多领域都取得了成功应用 但平静的日子只延续到2010年左右 xff0c 随着大数据的涌现和计算机算力提升 xff0c 深度学习模型异军突起 xff0c 极大改变了机器
  • freemarker实现word文档模板动态生成

    携手创作 xff0c 共同成长 xff01 这是我参与 掘金日新计划 8 月更文挑战 的第29天 xff0c 点击查看活动详情 1 写在前面 很多时候 xff0c 我们可能需要根据一个word模板 xff0c 动态生成 xff0c 我们所需
  • 生信学习——R语言练习题-初级(附详细答案解读)

    题目目录 1 打开 Rstudio 告诉我它的工作目录 2 新建6个向量 xff0c 基于不同的数据类型 xff08 重点是字符串 xff0c 数值 xff0c 逻辑值 xff09 3 告诉我在你打开的rstudio里面 getwd 代码运
  • 生信学习——GEO数据挖掘

    步骤 STEP1 xff1a 表达矩阵ID转换STEP2 xff1a 差异分析STEP3 xff1a KEGG数据库注释完整代码 写在前面 按照生信技能树的学习路线 xff0c 学完R语言就该学习GEO数据挖掘了 有人说GEO数据挖掘可以快
  • 机器学习——基于python的鸢尾花SVM练习(包含超参数批量筛选、交叉验证)

    目录 1 最普通的SVM2 交叉验证 筛选超参数法一 xff1a cross val score法二 xff1a GridSearchCV xff08 推荐 xff09 3 完整代码 写在前面 虽然本人一直对机器学习感兴趣 xff0c 但是
  • python学习——tsv文件批量转为csv文件、csv文件列合并

    写在前面 近日在处理数据的时候发现有的文件为csv文件 xff0c 有的为tsv文件 xff0c 大概搜了一下了解到 xff1a TSV是用制表符 xff08 t xff09 作为字段值的分隔符 xff1b CSV是用半角逗号 xff08
  • PPI网络的构建与美化(String+Cytoscape)

    目录 写在前面一 使用string分析数据二 使用Cytoscape构建网络1 导入TSV文件2 Analyze Network3 Generate Style4 CytoNCA计算Betweenness 三 美化网络1 根据Between
  • 生信刷题之ROSALIND——Part 2

    目录 1 Counting Point MutationsProblemSample DatasetSample OutputCodeOutput 2 Mendel 39 s First LawProblemSample DatasetSa
  • 生信刷题之ROSALIND——Part 3

    目录 1 Mortal Fibonacci RabbitsProblemSample DatasetSample OutputCodeOutput 2 Overlap GraphsProblemSample DatasetSample Ou
  • 生信刷题之ROSALIND——Part 4 (MPRT, MRNA, ORF)

    目录 写在前面1 Finding a Protein MotifProblemSample DatasetSample OutputCodeOutput 2 Inferring mRNA from ProteinProblemSample
  • Pandas第三次作业20200907

    练习1 读取北向 csv 指定trade date为行索引 查看数据的基本信息 有无缺失值 对其缺失值进行处理 删除缺失值所在行 查看数据的基本信息 查看数据是否清洗完毕 index列没啥用 将index列删除 观察数据是否有重复行 将重复
  • Linux设置开机默认进入命令行或者图形界面

    开机默认进入命令行模式 xff1a sudo systemctl set default multi user target 开机默认进入图形用户界面 xff1a sudo systemctl set default graphical t
  • 美团后端笔试

    文章目录 整场笔试下来 xff0c 整体难度一般 xff0c 只不过在第三题扑克牌游戏的时候进行的不是很顺利 xff0c 附加题难度一般 xff0c 不知道有没有小伙伴和我一样时间耗费在第三题上面的 1 魔法外卖 题目描述 xff1a 炸鸡