您好,欢迎来到赴品旅游。
搜索
您的当前位置:首页LeetCode—美团2021秋招 001、002、003、004

LeetCode—美团2021秋招 001、002、003、004

来源:赴品旅游

美团2021秋招 001 小美的用户名、002 小美的仓库整理、003 小美的跑腿代购、004 小团的复制粘贴

题目描述:
[001]
小美是美团的前端工程师,为了防止系统被恶意攻击,小美必须要在用户输入用户名之前做一个合法性检查,一个合法的用户名必须满足以下几个要求:

用户名的首字符必须是大写或者小写字母。
用户名只能包含大小写字母,数字。
用户名需要包含至少一个字母和一个数字。
如果用户名合法,请输出 “Accept”,反之输出 “Wrong”。
[002]
小美是美团仓库的管理员,她会根据单据的要求按顺序取出仓库中的货物,每取出一件货物后会把剩余货物重新堆放,使得自己方便查找。已知货物入库的时候是按顺序堆放在一起的。如果小美取出其中一件货物,则会把货物所在的一堆物品以取出的货物为界分成两堆,这样可以保证货物局部的顺序不变。
已知货物最初是按 1~n 的顺序堆放的,每件货物的重量为 w[i] ,小美会根据单据依次不放回的取出货物。请问根据上述操作,小美每取出一件货物之后,重量和最大的一堆货物重量是多少?
[003]
小美的一个兼职是美团的一名跑腿代购员,她有 n 个订单可以接,订单编号是 1~n ,但是因为订单的时效性,他只能选择其中 m 个订单接取,精明的小美当然希望自己总的获利是最大的,已知,一份订单会提供以下信息,跑腿价格 v ,商品重量 w kg,商品每重 1kg ,代购费用要加 2 元,而一份订单可以赚到的钱是跑腿价格和重量加价之和。小美可是开兰博基尼送货的人,所以自然不会在意自己会累这种事情。请问小美应该选择哪些订单,使得自己获得的钱最多。
请你按照选择的订单编号的从小到大顺序,如果存在多种方案,输出订单编号字典序较小的方案。
[004]
小团是一个莫得感情的 CtrlCV 大师,他有一个下标从 1 开始的序列 A 和一个初始全部为 -1 序列 B ,两个序列的长度都是 n 。他会进行若干次操作,每一次操作,他都会选择 A 序列中一段连续区间,将其粘贴到 B 序列中的某一个连续的位置,在这个过程中他也会查询 B 序列中某一个位置上的值。
我们用如下的方式表示他的粘贴操作和查询操作:
粘贴操作:1 k x y,表示把 A 序列中从下标 x 位置开始的连续 k 个元素粘贴到 B 序列中从下标 y 开始的连续 k 个位置上。原始序列中的元素被覆盖。(注意:输入数据可能会出现粘贴后 k 个元素超出 B 序列原有长度的情况,超出部分可忽略)
查询操作:2 x,表示询问B序列下标 x 处的值是多少。

第001题

import java.util.Scanner;

public class Solution {
    public static boolean isBig(char c) {
        return ('A' <= c) && (c <= 'Z');
    }
    public static boolean isSmall(char c) {
        return ('a' <= c) && (c <= 'z');
    }
    public static boolean isNum(char c) {
        return ('0' <= c) && (c <= '9');
    }
    public static boolean check(String temp){
        char[] username = temp.toCharArray();
        int len = username.length;
        if(len < 2 || (!isBig(username[0]) && !isSmall(username[0]))){
            return false;
        }
        boolean num = false;
        for(int j = 1;j < len;j ++){
            if(!isBig(username[j]) && !isSmall(username[j]) && !isNum(username[j])){
                return false;
            }
            if(isNum(username[j]))
                num = true;
        }
        if(num){
            return true;
        }
        return false;
    }
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        int nums = Integer.parseInt(scan.nextLine());
        for (int i = 0; i < nums; i++) {
            String s = scan.nextLine();
            if(check(s)) System.out.println("Accept");
            else {
                System.out.println("Wrong");
            }
        }

    }
  
}

第002题

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.*;

public class test {

    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int num = Integer.parseInt(scan.nextLine());
        String[] temp = scan.nextLine().split(" ");
        String[] temp2 = scan.nextLine().split(" ");
        int len = temp.length;
        int[] weight = new int[len];
        int[] dosth = new int[len];
        for(int i = 0;i < len;i ++){
            weight[i] = Integer.parseInt(temp[i]);
            dosth[i] = Integer.parseInt(temp2[i]);
        }
        int[] right = new int[len];
        int[] left = new int[len];
        int rec = 0;
        for(int i = 0;i < len;i ++){
            left[i] = rec;
            rec += weight[i];
        }
        rec = 0;
        for(int i = len - 1;i >= 0;i --){
            right[i] = rec;
            rec += weight[i];
        }
        for(int i = 0;i < len;i ++){
            int nowPos = dosth[i] - 1;
            if(right[nowPos] > left[nowPos]){
                System.out.println(right[nowPos]);
                continue;
            }
            System.out.println(left[nowPos]);
        }
    }

}

第003题

import java.util.*;

class Order{
    int id;
    int price;
    public Order(int id, int price){
        this.id = id;
        this.price = price;
    }
}
public class test {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int m = scan.nextInt();
        Order[] orders = new Order[n];
        for(int i = 0;i < n;i ++){
            orders[i] = new Order(i + 1, scan.nextInt() + scan.nextInt() * 2);
        }
        Arrays.sort(orders, new Comparator<Order>() {
            @Override
            public int compare(Order o1, Order o2) {
                if(o1.price == o2.price){
                    return o1.id > o2.id ? 1 : -1;
                }
                return o1.price > o2.price ? -1 : 1;
            }
        });
        int[] temp = new int[m];
        for(int i= 0;i < m;i ++){
            temp[i] = orders[i].id;
        }
        Arrays.sort(temp);
        for(int i = 0;i < m - 1;i ++){
            System.out.print(temp[i] + " ");
        }
        System.out.println(temp[m-1]);
    }

}

第004题

package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	var n, m int
    var a, b, c, d int
    in := bufio.NewReader(os.Stdin)
	fmt.Scanf("%v\n", &n)
	A := make([]int, n)
	B := make([]int, n)
	for i := 0; i < n; i++ {
		fmt.Scanf("%v", &A[i])
		B[i] = -1
	}
	fmt.Scanf("\n")
	fmt.Scanf("%v\n", &m)
	for ; m > 0; m-- {
		fmt.Fscan(in, &a)
		if a == 2 {
			fmt.Fscan(in, &b)
			fmt.Println(B[b-1])
		}else{
            fmt.Fscan(in, &b, &c, &d)
            for i, j := c-1, d-1; j < n && i < n && b > 0; {
                B[j] = A[i]
                j++
                i++
                b--
		    }
        }
	}

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fupindai.com 版权所有 赣ICP备2024042792号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务