![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
牛客网
牛客网刷题
yours_棒棒糖
间歇性踌躇满志,持续性混吃等死!!!难搞喔!!
生活不易,继续前行,为了成为最好的自己!
刷题记录,博客:https://github.com/can19960229/Candy_leetcode
展开
-
【牛客网-名企高频面试题】NC136 输出二叉树的右视图
输出二叉树的右视图136 输出二叉树的右视图题目描述请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图示例1输入[1,2,4,5,3],[4,2,5,1,3]返回值[1,3,5]解题思路可以先做这题:105. 从前序与中序遍历序列构造二叉树从前序遍历确定根节点,然后再去中序遍历中找到左右子树构建出二叉树后,使用队列存储节点,进行层序遍历二叉树,先左后右,用list记录每层最后出队的元素其中递归版本的层序遍历: public int[] dfs1(TreeNode原创 2021-05-12 22:29:38 · 165 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ24 合唱队——最长上升子序列
HJ24 合唱队题目描述计算最少出列多少位同学,使得剩下的同学排成合唱队形说明:N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1<=i<=K)使得T1<T2<…<Ti-1Ti+1>…>TK。你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合原创 2021-04-24 20:51:20 · 647 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ20 密码验证合格程序
题目描述密码要求:1.长度超过8位2.包括大小写字母.数字.其它符号,以上四种至少三种3.不能有相同长度大于2的子串重复输入描述:一组或多组长度超过2的字符串。每组占一行输出描述:如果符合要求输出:OK,否则输出NG示例1输入021Abc9000021Abc9Abc1021ABC9000021$bc9000输出OKNGNGOK思路解析直接暴力求解的,这个程序的话,求八位数和数字判断都很简单,最后一个使用三层循环去枚举三个的子串就可以了然后如果有数字,数字项=tru原创 2021-04-23 23:05:54 · 407 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ 48 从单向链表中删除指定值的节点
HJ 48 从单向链表中删除指定值的节点题目描述输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。链表的值不能重复。构造过程,例如1 <- 23 <- 25 <- 14 <- 57 <- 2最后的链表的顺序为 2 7 3 1 5 4删除 结点 2则结果为 7 3 1 5 4链表长度不大于1000,每个节点的值不大于10000。本题含有多组样例。输入描述:1 输入链表结点个数2 输入头结点的值3原创 2021-04-21 22:54:16 · 318 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ48 从单链表中删除指定值的节点
HJ48 从单链表中删除指定值的节点题目描述输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。链表的值不能重复。构造过程,例如1 <- 23 <- 25 <- 14 <- 57 <- 2最后的链表的顺序为 2 7 3 1 5 4删除 结点 2则结果为 7 3 1 5 4链表长度不大于1000,每个节点的值不大于10000。本题含有多组样例。输入描述:1 输入链表结点个数2 输入头结点的值3 按原创 2021-04-18 22:17:16 · 354 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ81 字符串字符匹配
HJ81 字符串字符匹配题目描述判断短字符串中的所有字符是否在长字符串中全部出现。请注意本题有多组样例输入。输入描述:输入两个字符串。第一个为短字符串,第二个为长字符串。两个字符串均由小写字母组成。输出描述:如果短字符串的所有字符均在长字符串中出现过,则输出true。否则输出false。示例1输入bcabc输出true解题思路我的笨办法 public static void main(String[] args) { Scanner sc = new Sca原创 2021-04-13 23:14:04 · 644 阅读 · 2 评论 -
【牛客网 - 华为机试】HJ26 字符串排序
HJ26 字符串排序题目描述编写一个程序,将输入字符串中的字符按如下规则排序。规则 1 :英文字母从 A 到 Z 排列,不区分大小写。如,输入: Type 输出: epTy规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。如,输入: BabA 输出: aABb规则 3 :非英文字母的其它字符保持原来的位置。如,输入: By?e 输出: Be?y注意有多组测试数据,即输入有多行,每一行单独处理(换行符隔开的表示不同行)输入描述:输入字符串输出描述:输出字符串示例1输原创 2021-04-13 23:09:55 · 267 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ31 走方格的方案数
HJ31 走方格的方案数该题与LeetCode 64 最小路径和是一致的题目描述请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。本题含有多组样例输入。输入描述:每组样例输入两个正整数n和m,用空格隔开。(1≤n,m≤8)输出描述:每组样例输出一行结果示例1输入2 21 2输出63代码package 笔试汇总.华为;/** * Copyright (C)原创 2021-04-10 21:17:53 · 303 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ102 字符统计
字符统计题目描述输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。本题含有多组样例输入输入描述:一个只包含小写英文字母和数字的字符串。输出描述:一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出。示例1输入aaddccdc1b1bbbbbbbbb输出cdab1说明第一个样例里,c和d出现3次,a出现2次,但c的ASCII码比d小,所以先输出c,再输出d,原创 2021-04-10 21:14:30 · 545 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ17 坐标移动
HJ17 坐标移动题目描述开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。输入:合法坐标为A(或者D或者W或者S) + 数字(两位以内)坐标之间以;分隔。非法坐标点需要进行丢弃。如AA10; A1A; %; YAD; 等。下面是一个简单的例子 如:A10;S20;W10;D30;X;A1A;B10A11;;A10;处理过程:起点(0,0)A10原创 2021-04-10 16:04:42 · 233 阅读 · 0 评论 -
【❤重点❤】【牛客网 - 华为机试】HJ16 购物单——动态规划
HJ16 购物单题目描述解题思路这题其实是0-1背包问题,但是附加了条件经典背包问题回顾问题描述:有一个背包可以装物品的总重量为W,现有N个物品,每个物品中w[i],价值v[i],用背包装物品,能装的最大价值是多少?定义状态转移数组dp[i][j],表示前i个物品,背包重量为j的情况下能装的最大价值。例如,dp[3][4]=6,表示用前3个物品装入重量为4的背包所能获得的最大价值为6,此时并不是3个物品全部装入,而是3个物品满足装入背包的条件下的最大价值。状态转移方程:dp[i][j]原创 2021-04-08 22:48:24 · 1316 阅读 · 1 评论 -
【牛客网 - 华为机试】HJ21 简单密码破解
HJ21 简单密码破解题目描述密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。他是这么变换的,大家都知道手机上的字母: 1–1, abc–2, def–3, ghi–4, jkl–5, mn原创 2021-04-08 22:40:19 · 327 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ59 找出字符串只出现一次的字符
HJ59 找出字符串只出现一次的字符题目描述找出字符串中第一个只出现一次的字符输入描述:输入几个非空字符串输出描述:输出第一个只出现一次的字符,如果不存在输出-1示例1输入asdfasdfoaabb输出o-1import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); o原创 2021-04-08 22:38:08 · 187 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ2 计算字符个数
HJ2 计算字符个数题目描述写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数。不区分大小写。输入描述:第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字母。输出描述:输出输入字符串中含有该字符的个数。示例1输入ABCabcA输出2解题思路package 笔试汇总.华为;/** * Copyright (C), 2019-2021 * author candy_chen * date 2021/3/31原创 2021-03-31 19:30:29 · 147 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ1 字符串最后一个单词的长度
HJ1 字符串最后一个单词的长度题目描述计算字符串最后一个单词的长度,单词以空格隔开。输入描述:输入一行,代表要计算的字符串,非空,长度小于5000。输出描述:输出一个整数,表示输入字符串最后一个单词的长度。示例1输入hello nowcoder输出8解题思路package 笔试汇总.华为;/** * Copyright (C), 2019-2021 * author candy_chen * date 2021/3/31 17:21 * * @Classname原创 2021-03-31 17:35:09 · 176 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ106 字符串逆序
HJ106 字符串逆序题目描述将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。输入描述:输入一个字符串,可以有空格输出描述:输出逆序的字符串示例1输入I am a student输出tneduts a ma I解题思路package 笔试汇总.华为;/** * Copyright (C), 2019-2021 * author candy_chen * date 2021/3/29 20:51 * * @Classname HJ106 *原创 2021-03-31 17:33:57 · 806 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ23 删除字符串中出现次数最小的字符
HJ23 删除字符串中出现次数最小的字符题目描述实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。注意每个输入文件有多组输入,即多个字符串用回车隔开输入描述:字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。输出描述:删除字符串中出现次数最少的字符后的字符串。示例1输入abcddaabcddd输出ddaaddd解题思路/** * Copyright (C), 201原创 2021-03-31 09:31:30 · 331 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ12 字符串反转
HJ12 字符串反转题目描述接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)输入描述:输入一行,为一个只包含小写字母的字符串。输出描述:输出该字符串反转后的字符串。示例1输入abcd输出dcbapackage 笔试汇总.华为;/** * Copyright (C), 2019-2021 * author candy_chen * date 2021/3/29 20:48 * * @Classname HJ12 * Desc原创 2021-03-30 16:48:34 · 189 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ11 数字颠倒
HJ11 数字颠倒题目描述输入一个整数,将这个整数以字符串的形式逆序输出程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001输入描述:输入一个int整数输出描述:将这个整数以字符串的形式逆序输出示例1输入1516000输出0006151package 笔试汇总.华为;/** * Copyright (C), 2019-2021 * author candy_chen * date 2021/3/29 19:42 * * @Class原创 2021-03-30 16:46:36 · 183 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ10 字符个数统计
HJ10 字符个数统计题目描述编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3。输入描述:输入一行没有空格的字符串。输出描述:输出范围在(0~127)字符的个数。示例1输入abc输出3package 笔试汇总.华为;/** * Copyright (C), 2019-2021 * author原创 2021-03-30 16:45:17 · 234 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ9 提取不重复的整数
HJ9 提取不重复的整数题目描述输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。保证输入的整数最后一位不是0。输入描述:输入一个int型整数输出描述:按照从右向左的阅读顺序,返回一个不含重复数字的新的整数示例1输入9876673输出37689package 笔试汇总.华为;/** * Copyright (C), 2019-2021 * author candy_chen * date 2021/3/30 15:29 * * @Clas原创 2021-03-30 16:43:41 · 251 阅读 · 0 评论 -
【牛客网 - 华为机试】HJ8 合并表记录
HJ8 合并表记录题目描述数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。输入描述:先输入键值对的个数然后输入成对的index和value值,以空格隔开输出描述:输出合并后的键值对(多行)示例1输入40 10 21 23 4输出0 31 23 4package 笔试汇总.华为;/** * Copyright (C), 2019-2021 * author candy_ch原创 2021-03-30 16:41:36 · 166 阅读 · 0 评论 -
【牛客-算法笔试 3月24日华为机试题】给你一个纯数字字符串s,请返回连续单一数字子串的个数
题目描述Description: 给你一个纯数字字符串s,请返回连续单一数字子串的个数提示:1 <= s.length <= 100输入描述:“11121”解释:只含单一字母的子串分别是:“111” 、“11”, “1” “2”“111” 出现1次“11” 出现2次“1” 出现4次“2” 出现1次共 1 + 2 + 4 + 1 = 8解题思路:先求出所有子串再判断子串是否都是相同字符 /** * 暴力法 * @param s原创 2021-03-24 21:04:21 · 534 阅读 · 1 评论 -
【牛客网-名企高频面试题】NC59 矩阵的最小路径和——动态规划
矩阵的最小路径题目描述给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。示例1输入[[1,3,5,9],[8,1,3,4],[5,0,6,1],[8,8,4,0]]返回值12解题思路第一行 只能从左往右第一个元素 的值为 原数组的第一个元素 dp[0][0] = a[0][0] dp[0][j] = a[0][j] + dp[0][j-1];第一列元素 只能从上往下 dp[i]原创 2021-03-21 22:08:47 · 177 阅读 · 0 评论 -
【牛客网-名企高频面试题】NC28 最小覆盖子串——滑动窗口法
最小覆盖子串题目描述:给出两个字符串 S 和 T,要求在O(n)的时间复杂度内在 S 中找出最短的包含 T 中所有字符的子串。例如:S =“XDOYEZODEYXNZ"S=“XDOYEZODEYXNZ”T =“XYZ”找出的最短子串为"YXNZ”注意:如果 S 中没有包含 T 中所有字符的子串,返回空字符串 “”;满足条件的子串可能有很多,但是题目保证满足条件的最短的子串唯一。示例1输入“XDOYEZODEYXNZ”,“XYZ”返回值“YXNZ”解题思路这道题的思路是:b原创 2021-03-16 22:19:50 · 546 阅读 · 0 评论 -
【牛客网-名企高频面试题】NC119 最小的K个数
NC119 最小的K个数冒泡排序的思想,只不过最外层循环K次就可以了,也就是说不用全部排序,只挑出符合提议的K个就可以。import java.util.ArrayList;public class Solution { /** 冒泡排序的思想,只不过最外层循环K次就可以了,也就是说不用全部排序,只挑出符合提议的K个就可以。 */ public ArrayList<Integer> GetLeastNumbers_Solution(int [] inpu原创 2021-03-15 22:41:19 · 121 阅读 · 0 评论 -
【牛客网-名企高频面试题】NC50 链表中的节点每k个一组翻转
链表中的节点每k个一组翻转解题思路public class Solution { public static ListNode reverseKGroup(ListNode head, int k) { if(head == null || head.next == null || k < 2) return head; ListNode dummy = new ListNode(0); dummy.next = head; ListNode pre = dummy,原创 2021-03-15 22:39:43 · 101 阅读 · 0 评论 -
【牛客网-名企高频面试题】NC97 出现次数的TopK问题
NC97 出现次数的TopK问题题目描述给定String类型的数组strArr,再给定整数k,请严格按照排名顺序打印 出次数前k名的字符串。[要求]如果strArr长度为N,时间复杂度请达到O(N \log K)O(NlogK)输出K行,每行有一个字符串和一个整数(字符串表示)。你需要按照出现出现次数由大到小输出,若出现次数相同时字符串字典序较小的优先输出示例1输入[“1”,“2”,“3”,“4”],2返回值[[“1”,“1”],[“2”,“1”]]示例2输入[“1”,“1”,“原创 2021-01-15 22:35:07 · 208 阅读 · 0 评论 -
【牛客网-名企高频面试题】 NC73 数组中出现次数超过一半的数字
NC73 数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路1:最直白的解法是使用一个 map 来记录各个数字出现的次数,最后取出现次数最多的作为解。但这个方法需要消耗额外的空间,不是最优。思路2(推荐):用一般的排序也可以完成这道题目,但是如果那样完成的话就可能太简单了。用preValue记录上一次访问的值,原创 2021-01-15 22:26:16 · 90 阅读 · 0 评论 -
【牛客网-名企高频面试题】 NC66 两个链表的第一个公共结点
【牛客网-名企高频面试题】 NC66 两个链表的第一个公共结点题目描述:输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)方法:双指针法如何让本来长度不相等的变为相等的?可以让a+b作为链表A的新长度,b+a作为链表B的新长度。/*public class ListNode { int val; ListNode next = null; ListNode(int val) {原创 2021-01-12 22:13:49 · 154 阅读 · 3 评论 -
【牛客网-名企高频面试题】 NC72 二叉树的镜像
【牛客网-名企高频面试题】 NC72 二叉树的镜像题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。递归版本:public void Mirror_1(TreeNode root) { if(root == null){ return; } TreeNode temp = root.left; root.left = root.right; root.right = temp;原创 2021-01-12 22:10:20 · 120 阅读 · 0 评论 -
【牛客网-名企高频面试题】 NC102 最近公共祖先——DFS
【牛客网-名企高频面试题】 NC102 最近公共祖先——DFS题目描述给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。示例1输入[3,5,1,6,2,0,8,#,#,7,4],5,1返回值3public class 最近公共祖先 { /** * * @param root TreeNode类 * @param o1 int整型 * @param o2 int整型 * @return i原创 2021-01-11 22:11:34 · 117 阅读 · 0 评论 -
【牛客网算法课】—— 将单向链表按某值划分成左边小、 中间相等、 右边大的形式
将单向链表按某值划分成左边小、 中间相等、 右边大的形式【 题目】 给定一个单向链表的头节点head, 节点的值类型是整型, 再给定一个整 数pivot。 实现一个调整链表的函数, 将链表调整为左部分都是值小于 pivot的节点, 中间部分都是值等于pivot的节点, 右部分都是值大于 pivot的节点。除这个要求外, 对调整后的节点顺序没有更多的要求。例如: 链表9->0->4->5->1, pivot=3。 调整后链表可以是1->0->4->9->5,原创 2021-01-07 22:14:59 · 148 阅读 · 0 评论 -
【牛客网算法课】——“之”字形打印矩阵
【题目】给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵,例如:1,8,6,72,6,4,113,5,9,10打印结果是1,8,2,3,6,6,7,4,5,9,11,10。要求额外空间复杂度是O(1)。思路:A逐个向右移动,B逐个向下移动,如果当两个标记有一个超过了界限,B则向右移动,A向下移动,两个坐标始终处于一条斜线,然后打印斜线上的元素就行。/**“之字形打印矩阵”*/public class Code_08_ZigZagPrintMatrix { pu原创 2021-01-05 20:47:02 · 165 阅读 · 0 评论 -
【牛客网算法课】——反转单向和双向链表
【题目】:分别实现反转单向链表和反转双向链表的函数【要求】:如果链表长度为N,时间复杂度要求为O(N),额外空间复杂度要求为O(1)原创 2021-01-05 20:03:04 · 144 阅读 · 0 评论 -
【牛客网算法课】——猫狗队列
public class Pet{ private String type; public Pet(String type){ this.type = type; } public String getPetType(){ return this.type; } } public class Dog extends Pet { p原创 2021-01-02 19:31:26 · 108 阅读 · 0 评论 -
【牛客网-名企高频面试题】NC 69 链表中倒数第k个结点
NC 69 链表中倒数第k个结点题目描述:输入一个链表,输出该链表中倒数第k个结点。示例1输入1,{1,2,3,4,5}返回值{5}/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode FindKthToTail原创 2020-12-29 22:23:07 · 110 阅读 · 0 评论 -
【牛客网-名企高频面试题】 NC53 删除链表的倒数第n个节点
NC53 删除链表的倒数第n个节点题目描述:给定一个链表,删除链表的倒数第n个节点并返回链表的头指针例如:给出的链表为:1->2->3->4->5, n= 2.删除了链表的倒数第n个节点之后,链表变为1->2->3->5.输入{1,2},2返回值{2}import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * } *原创 2020-12-29 22:18:14 · 105 阅读 · 0 评论 -
【牛客网-名企高频面试题】 NC15 求二叉树的层序遍历
NC15 求二叉树的层序遍历import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode类 * @return int整型ArrayList<Arra原创 2020-12-23 21:19:33 · 69 阅读 · 0 评论 -
【牛客网-名企高频面试题】 NC88 寻找第K大
NC88 寻找第K大题目描述有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。示例1输入[1,3,5,2,2],5,3返回值2先排序再查找 public int findKthLargest(int[] nums, int k) { Arrays.sort(nums); return nums[nums.length - k];原创 2020-12-23 21:18:20 · 119 阅读 · 0 评论