Leetcode刷题心得
记录自己刷题
Twish
这个作者很懒,什么都没留下…
展开
-
【华为】【校招】【Java】【模拟】贪吃蛇
座位一排共 N 个座位,编号分别为[0,N-1],● seat -> 0,空在任何位置都行,但是要给他安排索引最小的位置,也就是座位 0。每当一个员工进入时,需要坐到最大社交距离(最大化自己和其他人的距离的座位);● seat -> 4,要和旁边的人距离最远,应该坐到中间,也就是座位 4。会议室座位总数seatNum。例如 -4 表示坐在位置 4 的员工离开(保证有员工坐在该座位上)最后进来员工,他会坐在第几个位置,如果位置已满,则输出-1。● seat -> 9,要和旁边的人距离最远,也就是座位 9。原创 2022-10-12 15:52:32 · 973 阅读 · 0 评论 -
【华为】【校招】【Java】【模拟】最大社交距离
座位一排共 N 个座位,编号分别为[0,N-1],● seat -> 0,空在任何位置都行,但是要给他安排索引最小的位置,也就是座位 0。每当一个员工进入时,需要坐到最大社交距离(最大化自己和其他人的距离的座位);● seat -> 4,要和旁边的人距离最远,应该坐到中间,也就是座位 4。会议室座位总数seatNum。例如 -4 表示坐在位置 4 的员工离开(保证有员工坐在该座位上)最后进来员工,他会坐在第几个位置,如果位置已满,则输出-1。● seat -> 9,要和旁边的人距离最远,也就是座位 9。原创 2022-10-12 15:51:41 · 333 阅读 · 0 评论 -
【华为】【校招】【Java】【模拟】简易内存池
● REQUEST=请求的内存大小 表示请求分配指定大小内存,如果分配成功,返回分配到的内存首地址;如果内存不足,或指定的大小为0,则输出error。● RELEASE=释放的内存首地址 表示释放掉之前分配的内存,释放成功无需输出,如果释放不存在的首地址则输出error。● 请实现一个简易内存池,根据请求命令完成内存分配和释放。原创 2022-09-12 17:23:30 · 448 阅读 · 0 评论 -
【华为校招】【校招】【Java】【模拟】打印任务排序
● 然后检查队列余下任务中有没有比A优先级更高的任务,如果有比A优先级高的任务,则将任务A放到队列尾部,否则就执行任务A的打印。● 接着队列头部任务优先级为3,队列中还有优先级为5的任务,优先级3任务被移到队列尾部;● 输入一行,为每个任务的优先级,优先级之间用逗号隔开,优先级取值范围是1~9。● 输出一行,为每个任务的打印顺序,打印顺序从0开始,用逗号隔开。● 请编写一个程序,根据输入的打印队列,输出实际的打印顺序。● 队列头部任务的优先级为9,最先打印,故序号为0;● 最后优先级为3的任务的序号为2。原创 2022-09-12 17:22:29 · 260 阅读 · 0 评论 -
【华为校招】【校招】【Java】【模拟】最大社交距离
座位一排共 N 个座位,编号分别为[0,N-1],● seat -> 0,空在任何位置都行,但是要给他安排索引最小的位置,也就是座位 0。每当一个员工进入时,需要坐到最大社交距离(最大化自己和其他人的距离的座位);● seat -> 4,要和旁边的人距离最远,应该坐到中间,也就是座位 4。会议室座位总数seatNum。例如 -4 表示坐在位置 4 的员工离开(保证有员工坐在该座位上)最后进来员工,他会坐在第几个位置,如果位置已满,则输出-1。● seat -> 9,要和旁边的人距离最远,也就是座位 9。原创 2022-09-12 17:21:19 · 193 阅读 · 0 评论 -
【华为校招】【校招】【Java】【模拟】贪吃蛇
图2:蛇头向左移动一格,蛇头和食物重叠,注意此时食物的格子成为了新的蛇头,第1节身体移动到蛇头位置,第2节身体移动到第1节身体位置,以此类推,图1:截取了贪吃蛇移动的一个中间状态,H表示蛇头,F表示食物,数字为蛇身体各节的编号,蛇为向左移动,此时蛇头和食物已经相邻。图6蛇头向上移动一格,此时蛇头和第8节身体都移动到了原来第7节身体的位置,发生碰撞,游戏结束。图3:蛇头继续向左移动一格,身体的各节按上述规则移动,此时蛇头已经和边界相邻,但还未碰撞。第二行为空格分隔的两个数,指定N和M,为数组的行和列数。原创 2022-09-12 17:20:11 · 881 阅读 · 0 评论 -
【华为校招】【校招】【Java】最长广播效应
● 当指定一个结点向其他结点进行广播,所有被广播结点收到消息后都会在原路径上回复一条响应消息,请计算发送结点至少需要等待几个时间单位才能收到所有被广播结点的响应消息。● 网络中的结点互联互通,且结点之间的消息传递有时延,相连结点的时延均为一个时间单位。● 现给定网络结点的连接关系link[i]={u,v},其中u和v表示网络结点。● 某通信网络中有N个网络结点,用1到N进行标识。...原创 2022-08-26 21:10:39 · 198 阅读 · 0 评论 -
【华为校招】【校招】【Java】叠积木
定义一个 dp 数组,dp[i] 表示如果积木为 i 时,最大积木层数。给出一个列表如[[6,7,],[5,4],[3,2]],表示木块的长和宽,当木块的长和宽不大于另个木块的长和宽时,就可以放在上面,此外数组还可以左右翻转。首先对输入的积木进行处理,统一大的做长放第一个位置,小的做宽放第二个位置。自定义排序,所有积木降序排,长度降序,相同则宽度降序。一个二维数组,里面是每个积木的长和宽,可以左右翻转。...原创 2022-08-26 21:09:50 · 301 阅读 · 0 评论 -
【华为校招】【校招】【Java】叠书【DP】最长递增子序列
给定一组书的长宽,并且只有当一本书的长宽同时小于另一本书的长宽时,两书才能叠放在一起,求该组书中最多能有多少本书叠放在一起。解释:前三本可叠放在一起。原创 2022-08-26 21:08:06 · 347 阅读 · 0 评论 -
【华为校招】【校招】【Java】分糖果I
老师给两个同学分糖果,每袋糖果中的数量不完全一样。一袋糖果只能分给一个人,并且一次性全分完必须。两个人分到的糖果数必须相同。返回两个人分到的糖果数,无法平均分配,返回-1。第二行,第三行为两个同学分配到的每袋糖果具体的糖果数,顺序不限。第二行是一个数组,每袋糖果数量,范围[1,100]第一行为每人分到的糖果总数,不能平均分配,输出-1。存在多种分配方式时,输出任意一种可行的方法即可。第一行输入糖果袋数,范围是[1,100]这道题可以转化为一个0-1背包问题。...原创 2022-08-26 21:07:02 · 282 阅读 · 0 评论 -
【华为校招】【校招】【Java】字符串匹配(DP)
考古问题,假设以前的石碑被打碎成了很多块,每块上面都有一个或若干个字符,请你写个程序来把之前石碑上文字可能的组合全部写出来,按升序进行排列。示例1 输入输出示例仅供调试,后台判题数据一般不包含示例。示例2 输入输出示例仅供调试,后台判题数据一般不包含示例。...原创 2022-08-26 21:05:00 · 464 阅读 · 5 评论 -
【华为校招】【校招】【Java】考古问题
考古问题,假设以前的石碑被打碎成了很多块,每块上面都有一个或若干个字符,请你写个程序来把之前石碑上文字可能的组合全部写出来,按升序进行排列。示例1 输入输出示例仅供调试,后台判题数据一般不包含示例。示例2 输入输出示例仅供调试,后台判题数据一般不包含示例。...原创 2022-08-26 21:03:15 · 427 阅读 · 0 评论 -
【华为校招】【校招】【Java】猜密码
2、输出的密码数字要按照从小到大的顺序排列,密码组合需要按照字母顺序,从小到大的顺序排序。可能的密码组合,每种组合显示成一行,每个组合内部的数字以半角逗号分隔,从小到大的顺序排列。只记得密码都是数字,而且所有数字都是不重复的。3、输出的每一个组合的数字的数量要大于等于密码最小数字数量;1、输入的第一行是可能的密码数字列表,数字间以半角逗号分隔。1、输出的组合都是从可选的数字范围中选取的,且不能重复;4、如果可能的组合为空,则返回“None”2、输入的第二行是密码最小数字数量。2,3,4放到2,4的前面。..原创 2022-08-18 20:03:08 · 262 阅读 · 0 评论 -
【华为校招】【校招】【Java】污染水域(DFS)
数组中只有0和1,0表示纯净,1表示污染,每天只可污染上下左右的水域,如果开始全部被污染,或永远无法污染,则返回-1。输入一行字符串,字符串可转换为N*N的数组,数组可认为是一个水域,判断多少天后,水域被全部污染。示例1 输入输出示例仅供调试,后台判题数据一般不包含示例。...原创 2022-08-18 20:01:31 · 176 阅读 · 0 评论 -
【华为校招】【校招】【Java】单词搜索(DFS)
假设给定单词 HELLOWORD,在矩阵中只要能找到 H->E->L->L->O->W->O->R->L->D连成的单词,就算通过。输入第 1 行包含两个整数 n、m (0 < n,m < 21) 分别表示 n 行 m 列的矩阵,第 2 行是长度不超过100的单词 W (在整个矩阵中给定单词 W 只会出现一次),如果能在矩阵中连成给定的单词,则输出给定单词首字母在矩阵中的位置(第几行 第几列),找到它是一个小游戏,你需要在一个矩阵中找到给定的单词。...原创 2022-08-18 19:59:15 · 973 阅读 · 0 评论 -
【华为校招】【校招】【Java】服务失效判断(DFS)
某系统中有众多服务,每个服务用字符串(只包含字母和数字,长度原创 2022-08-18 19:58:20 · 333 阅读 · 0 评论 -
【华为校招】【校招】【Java】欢乐周末(DFS)
第二行开始为具体的地图,其中:3代表小华和小明选择的聚餐地点;第二行开始为具体的地图,其中:3代表小华和小明选择的聚餐地点;通过手机交流,他们在地图上选择了多个聚餐地点(由于自然地形等原因,部分聚餐地点不可达),求小华和小为都能到达的聚餐地点有多少个?由于图中小华和小为之间有个阻隔,此时,没有两人都能到达的聚餐地址,故而返回0。2 为小华或者小为,地图中必定有且仅有2个 (非障碍物)第一行输入m和n,m代表地图的长度,n代表地图的宽度。可以被两方都到达的聚餐地点数量,行末无空格。聚餐的地点数量为 k,则。.原创 2022-08-10 21:04:32 · 372 阅读 · 0 评论 -
【华为机试】【校招】【Java】迷宫问题(DFS)
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的路线。入口点为[0,0],既第一格是可以走的路。输入两个整数,分别表示二维数组的行数,列数。再输入相应的数组,其中的1表示墙壁,0表示可以走的路。数据保证有唯一解,不考虑有多解的情况,即迷宫只有一条通道。数据范围: 2≤n,m≤10 , 输入的内容只包含 0≤val≤1。左上角到右下角的最短路径,格式如样例所示。...原创 2022-08-10 21:01:05 · 352 阅读 · 0 评论 -
【华为机试】【校招】【Java】最大出牌数量(BFS)
● 手里给一副手牌,数字从0-9,有r(红色),,g(绿色),b(蓝色),y(黄色)四种颜色,出牌规则为每次打出的牌必须跟上一张的数字或者颜色相同,否则不能抽选。如果打(4,y) -> (4, b) -> (3, b),那么能打三张。● 选手应该怎么选才能使得抽选的次数最大,并且输出这个最大次数。如果打(1, r)-> (5, r),那么能打两张。● 第二行 牌的颜色(r,g,b,y四种颜色表示)● 第一行 牌的数值n (1...原创 2022-08-10 20:59:33 · 681 阅读 · 1 评论 -
【华为机试】【校招】【Java】机器人走迷宫(DFS)
机器人走一个迷宫,给出迷宫的x和y(x*y的迷宫)并且迷宫中有障碍物,输入k表示障碍物有k个,并且会将障碍物的坐标挨个输入。不可达方格为第四行前三个,该机器人在行走路径上不可能走到的方格,陷阱方格如第一行最后两个,走进之后则不能抵达终点。5、 有些地方是机器人无法到达的的,如标记为A的方格,称之为不可达方格,不可达方格不包括墙壁所在的位置。如代码类注释展示的样子,#表示可以走的方格,0代表障碍,机器人从0,0的位置只能向下或者向前走到出口,3、 房间有些方格是墙壁,如(4,1),机器人不能经过那儿。...原创 2022-08-02 21:36:21 · 968 阅读 · 2 评论 -
【华为机试】【校招】【7.14】【Java】路径
M*N的都是0,1,2的矩阵,M,N(1,2)->(2,2)同样距离的取行较小、同行再取列较小。(3行4列,初始位置第1行第1列)原创 2022-07-29 13:34:31 · 247 阅读 · 0 评论 -
【华为机试】【校招】【7.14】【Java】分糖
第二题,应该是哪里要贪心或者分治?要NlogN或者NsqrtN的。X个1-5的整数,要按顺序分N组,初始代价是2,如果相邻的分组和相同,代价不变,和不同,代价要加1。X,N原创 2022-07-29 13:00:53 · 301 阅读 · 0 评论 -
【华为笔试】【DFS】【Java】迷宫问题
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的路线。入口点为[0,0],既第一格是可以走的路。输入两个整数,分别表示二维数组的行数,列数。再输入相应的数组,其中的1表示墙壁,0表示可以走的路。数据保证有唯一解,不考虑有多解的情况,即迷宫只有一条通道。数据范围2≤n,m≤10,输入的内容只包含0≤val≤1。左上角到右下角的最短路径,格式如样例所示。说明注意不能斜着走!...原创 2022-07-19 22:47:54 · 313 阅读 · 0 评论 -
【华为笔试】【字符串】【Java】N进制减法
有效的字符包括0-9以及小写字母a-z,字符串有效字符个数最大为100个字符,另外还有结尾的\0。需要对输入的两个字符串按照给定的N进制进行减法操作,输出正负符号和表示结果的字符串。●按8进制,检查到减数不符合非0前导的要求,返回结果为-1,没有其他结果内容。其一为减法计算的结果,-1表示出错,0表示结果为整数,1表示结果为负数。按二进制计算11-1,计算正常,0表示符号为正数,结果为10。输入的被减数和减数,除了单独的0以外,不能是以0开头的字符串。其二为表示结果的字符串。...原创 2022-07-19 22:43:27 · 714 阅读 · 0 评论 -
【华为笔试】【数组】【Java】找到比自己强的人数
给定数组[[2,1],[32]],每组表示师徒关系,第一个元素是第二个元素的老师,数字代表排名,现在找出比自己强的徒弟。第一行数据[2,1]表示排名第2的员工是排名第1员工的导师,后面的数据以此类推。第二个元素1表示成绩排名第二的导师,有1个徒弟成绩超过他。第三个元素2表示成绩排名第二的导师,有2个徒弟成绩超过他。第一个元素0表示成绩排名第一的导师,没有徒弟考试超过他;...原创 2022-07-19 22:41:45 · 455 阅读 · 0 评论 -
【华为笔试】【模拟】【Java】斗地主之顺子
例如{3,4,5,6,7}、{3,4,5,6,7,8,9,10,J,Q,K,A}都是有效的顺子;而{J,Q,K,A,2}、{2,3,4,5,6}、{3,4,5,6}、{3,4,5,6,8}等都不是顺子。在斗地主扑克牌游戏中,扑克牌由小到大的顺序为3,4,5,6,7,8,9,10,J,Q,K,A,2,玩家可以出的扑克牌阵型有单张、对子、顺子、飞机、炸弹等。如果存在多个顺子,请每行输出一个顺子,且需要按顺子的第一张牌的大小(必须从小到大)依次输出。如果没有满足出牌规则的顺子,请输出No。......原创 2022-07-15 16:47:14 · 1073 阅读 · 0 评论 -
【华为笔试】【模拟】【Java】竖直四子棋
■ 题目描述竖直四子棋的棋盘是竖立起来的,双方轮流选择棋盘的一列下子,棋子因重力落到棋盘底部或者其他棋子之上,当一列的棋子放满时,无法再在这列上下子。一方的4个棋子横、竖或者斜方向连成一线时获胜。现给定一个棋盘和红蓝对弈双方的下子步骤,判断红方或蓝方是否在某一步获胜。下面以一个6×5的棋盘图示说明落子过程:下面给出横、竖和斜方向四子连线的图示:输入描述输入为2行,第一行指定棋盘的宽和高,为空格分隔的两个数字;第二行依次间隔指定红蓝双方的落子步骤,第1步为红方的落子,第2步为蓝方的落子,第3步为红原创 2022-07-12 20:15:47 · 636 阅读 · 0 评论 -
【华为机试】【字符串】【Java】 字符串比较
■ 题目描述【字符串比较】给定字符串A、B和正整数V,A的长度与B的长度相等, 请计算A中满足如下条件的最大连续子串的长度:1、该连续子串在A和B中的位置和长度均相同。2、该连续子串|A[i] – B[i]|之和小于等于V。其中|A[i] – B[i]|表示两个字母ASCII码之差的绝对值。输入描述:● 输入为三行:● 第一行为字符串A,仅包含小写字符,1 ...原创 2022-07-12 20:13:54 · 1152 阅读 · 2 评论 -
【华为机试】【贪心】【Java】导师请吃火锅
■ 题目描述入职后,导师会请你吃饭,你选择了火锅。火锅里会在不同时间下很多菜。不同食材要煮不同的时间,才能变得刚好合适。你希望吃到最多的刚好合适的菜,但你的手速不够快,用m代表手速,每次下手捞菜后至少要过m秒才能再捞(每次只能捞一个)。那么用最合理的策略,最多能吃到多少刚好合适的菜?输入描述第一行两个整数n,m,其中n代表往锅里下的菜的个数,m代表手速。接下来有n行,每行有两个数x,y代表第x秒下的菜过y秒才能变得刚好合适。(1 < n, m < 1000)(1 < x, y < 1000原创 2022-07-06 21:40:17 · 2869 阅读 · 0 评论 -
【华为机试】【字符串】【Java】TLV解析 Ⅱ
■ 题目描述描述:两端通过TLV格式的报文来通信,现在收到对端的一个TLV格式的消息包,要求生成匹配后的(tag, length, valueOffset)列表。具体要求如下:(1)消息包中多组tag、length、value紧密排列,其中tag,length各占1字节(uint8_t) , value所占字节数等于length的值(2)结果数组中tag值已知,需要填充每个tag对应数据的length和valueOffset值(valueOffset为value在原消息包中的起始偏移量(从0开始,以原创 2022-07-06 21:38:23 · 992 阅读 · 0 评论 -
【华为机试】【BFS】【Java】最小传输时延
如有问题请留言更正。■ 题目描述【最小传输时延】有MN的节点矩阵,每个节点可以向8个方向(上、下、左、右及四个斜线方向)转发数据包,每个节点转发时会消耗固定时延,连续两个相同时延可以减少一个时延值(即当有K个相同时延的节点连续转发时可以减少K- 1个时延值),求左上角(0,0)开始转发数据包到右下角(M-1,N- 1)并转发出的最短时延。输入描述第一行两个数字,M、N,接下来有M行,每行有N个数据,表示M N的矩阵。输出描述最短时延值。示例1 输入输出示例仅供调试,后台判题数据一般不原创 2022-06-22 17:55:10 · 1279 阅读 · 0 评论 -
[Leetcode刷题心得][数组、字符串]242. 有效的字⺟母异位词
题目:给定两个字符串串 s 和 t,编写⼀一个函数来判断 t 是否是 s 的字⺟母 异位词。说明:你可以假设字符串串只包含⼩小写字⺟母。示例:示例 1输入: s = "anagram", t = "nagaram" 输出: true示例 2输入: s = "rat", t = "car"输出: false解题思路:可以将26个英文字母都看成数组,如下表...原创 2019-10-20 00:22:08 · 270 阅读 · 0 评论