牛客网研发高频编程题
牛客网研发类高频编程考题
小唐要努力
这个作者很懒,什么都没留下…
展开
-
牛客网编程高频题32——NC91最长递增子序列
最长递增子序列描述给定数组arr,设长度为n,输出arr的最长递增子序列。(如果有多个答案,请输出其中字典序最小的)示例1输入[2,1,5,3,6,4,8,9,7]返回值[1,3,4,8,9]示例2输入[1,2,8,6,4]返回值[1,2,4]备注:假设其最长递增子序列有3个,(1,2,8)、(1,2,6)、(1,2,4)其中第三个字典序最小,故答案为(1,2,4),...原创 2021-09-08 20:13:45 · 592 阅读 · 0 评论 -
牛客网编程高频题31——NC54数组中相加和为0的三元组
数组中相加和为0的三元组描述给出一个有n个元素的数组S,S中是否有元素a、b、c满足a+b+c=0?找出数组S中所有满足条件的三元组。注意:三元组(a、b、c)中的元素必须按非降序排列。(即a≤b≤c) 解集中不能包含重复的三元组。例如,给定的数组 S = {-10 0 10 20 -10 -40},解集为(-10, -10, 20),(-10, 0, 10)示例1输入[0]返回值[]示例2输入[-2,0,1,1,2]返回...原创 2021-06-10 18:53:37 · 268 阅读 · 0 评论 -
牛客网编程高频题30——NC12重建二叉树
重建二叉树描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。示例1输入:[1,2,3,4,5,6,7],[3,2,4,1,6,5,7]返回值:{1,2,5,3,4,6,7}...原创 2021-06-10 08:32:46 · 117 阅读 · 0 评论 -
牛客网编程高频题29——NC17最长回文子串
最长回文子串描述对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。给定字符串A以及它的长度n,请返回最长回文子串的长度。示例1输入:"abc1234321ab",12返回值:7...原创 2021-06-03 09:41:34 · 224 阅读 · 1 评论 -
牛客网编程高频题28——NC65斐波那契数列
目录斐波那契数列描述示例1备注方法一:直接计算方法二:递归斐波那契数列描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。示例1输入:4返回值:3备注方法一:直接计算利用递推关系式:,将fn-1和fn-2的值存着不断更新计算新的值,public class Solution { public int Fibonacci(int n) ..原创 2021-06-02 16:09:52 · 117 阅读 · 0 评论 -
牛客网编程高频题27——NC38螺旋矩阵
目录螺旋矩阵描述示例1方法:遍历螺旋矩阵描述给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。示例1输入:[[1,2,3],[4,5,6],[7,8,9]]返回值:[1,2,3,6,9,8,7,4,5]方法:遍历按照一圈一圈逐圈螺旋进行遍历import java.util.*;public class Solution { public ArrayList<Integer> ..原创 2021-06-02 15:49:01 · 188 阅读 · 0 评论 -
牛客网编程高频题26——NC103反转字符串
目录反转字符串描述示例1方法一:栈方法二:倒叙赋值方法三:交换赋值反转字符串描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)示例1输入:"abcd"返回值:"dcba"方法一:栈利用栈先进后出的特性进行反转import java.util.*;public class Solution { public String solve (String str) { ..原创 2021-06-02 14:47:45 · 140 阅读 · 1 评论 -
牛客网编程高频题25——NC102在二叉树中找到两个节点的最近公共祖先
在二叉树中找到两个节点的最近公共祖先描述给定一棵二叉树以及这棵树上的两个节点 o1和o2,请找到 o1和o2的最近公共祖先节点。示例1输入:[3,5,1,6,2,0,8,#,#,7,4],5,1返回值:3备注二叉树的数据结构如下:public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null;}...原创 2021-06-02 14:24:40 · 157 阅读 · 2 评论 -
牛客网编程高频题24——NC40两个链表生成相加链表
两个链表生成相加链表描述假设链表中每一个节点的值都在 0 到9之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。例如:链表 1为 9->3->7,链表 2为 6->3,最后生成新的结果链表为 1->0->0->0。示例1输入:[9,3,7],[6,3]返回值:{1,0,0,0}备注链表的数据结构如下:public class ListNode ...原创 2021-06-01 20:11:00 · 147 阅读 · 0 评论 -
牛客网编程高频题23——NC66两个链表的第一个公共结点
两个链表的第一个公共结点描述输入两个无环的单链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)备注链表的数据结构如下:public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}方法一:双指针public c...原创 2021-06-01 17:41:08 · 148 阅读 · 2 评论 -
牛客网编程高频题22——NC127最长公共子串
最长公共子串描述给定两个字符串str1和str2,输出两个字符串的最长公共子串题目保证str1和str2的最长公共子串存在且唯一。示例1输入:"1AB2345CD","12345EF"复制返回值:"2345"复制备注:1 \leq |str_1|, |str_2| \leq 5\,0001≤∣str1∣,∣str2∣≤5000...原创 2021-05-31 11:12:26 · 126 阅读 · 0 评论 -
牛客网编程高频题21——NC14二叉树的之字形层序遍历
二叉树的之字形层序遍历描述给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替),例如:给定的二叉树是{3,9,20,#,#,15,7},该二叉树之字形层序遍历的结果是:[[3],[20,9],[15,7]]示例1输入{1,#,2}返回值[[1],[2]]备注二叉树的数据结构为:public class TreeNode { int val = 0; T...原创 2021-05-28 21:36:16 · 230 阅读 · 0 评论 -
牛客网编程高频题20——NC1大数加法
大数加法描述以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。(字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成)示例1输入:"1","99"返回值:"100"说明:1+99=100 方法...原创 2021-05-28 10:24:49 · 300 阅读 · 0 评论 -
牛客网编程高频题19——NC53删除链表的倒数第n个节点
目录删除链表的倒数第n个节点描述备注:示例1输入:返回值:方法一:暴力搜索方法二:快慢指针删除链表的倒数第n个节点描述给定一个链表,删除链表的倒数第n个节点并返回链表的头指针,例如,给出的链表为:1→2→3→4→5,n=2删除了链表的倒数第n 个节点之后,链表变为1→2→3→5.备注:题目保证 n 一定是有效的,请给出请给出时间复杂度为的算法链表数据结构为:public class ListNode { int va...原创 2021-05-27 13:21:42 · 198 阅读 · 2 评论 -
牛客网编程高频题18——NC52括号序列
目录括号序列题目描述示例1输入返回值示例2输入返回值方法一:栈方法二:栈括号序列题目描述给出一个仅包含字符 ( ,) ,{ ,} ,[ 和 ] ,的字符串,判断给出的字符串是否是合法的括号序列括号必须以正确的顺序关闭,"()" 和 "()[]{}" 都是合法的括号序列,但 "(]" 和 "([)]" 不合法。示例1输入"["返回值false示例2输入"[]"返回值true方法...原创 2021-04-08 19:23:18 · 371 阅读 · 0 评论 -
牛客网编程高频题17——NC3链表中环的入口节点
目录链表中环的入口节点题目描述方法:快慢指针链表中环的入口节点题目描述对于一个给定的链表,返回环的入口节点,如果没有环,返回null拓展:你能给出不利用额外空间的解法么?方法:快慢指针一个快指针,两个慢指针。快慢指针同时出发,如果快指针到达null,说明链表没有环 如果快慢指针相遇了,说明链表有环。 在快慢指针相遇的时候,让第二个慢指针从头结点出发, 当两个慢指针相遇的时候,相遇的位置就是环的起点。原理:1、假设链表有环,并且环之前的部分..原创 2021-04-08 13:31:19 · 147 阅读 · 0 评论 -
牛客网编程高频题16——NC22合并两个有序的数组
题目描述给出两个有序的整数数组 A 和 B ,请将数组 B 合并到数组A中,变成一个有序的数组注意:可以假设 A 数组有足够的空间存放 B 数组的元素,A 和 B 中初始的元素数目分别为 m 和 n方法不开辟新的空间i从A的末尾,j从B末尾开始,两两比较,大的放在末端public class Solution { public void merge(int A[], int m, int B[], int n) { int i=m-1,j=...原创 2021-04-08 13:11:28 · 111 阅读 · 0 评论 -
牛客网编程高频题15——NC41找到字符串的最长无重复字符子串
找到字符串的最长无重复字符子串题目描述给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同)。示例1输入[2,3,4,5]返回值4示例2输入[2,2,3,4,3]返回值3备注:...原创 2021-04-08 10:00:02 · 221 阅读 · 2 评论 -
牛客网编程高频题14——NC50链表中的节点每k个一组翻转
链表中的节点每k个一组翻转题目描述将给出的链表中的节点每 k个一组翻转,返回翻转后的链表如果链表中的节点数不是 k的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。要求空间复杂度O(1)例如:给定的链表是 1→2→3→4→5对于 k=2,你应该返回 2→1→4→3→5对于 k=3,你应该返回 3→2→1→4→5示例1输入{1,2,3,4,5},2返回值{2,1,4,3,5}方法一:栈import j...原创 2021-04-07 16:26:31 · 219 阅读 · 1 评论 -
牛客网编程高频题13——NC19子数组的最大累加和问题
目录子数组的最大累加和问题题目描述示例1输入返回值备注:方法:动态规划子数组的最大累加和问题题目描述给定一个数组arr,返回子数组的最大累加和例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.题目保证没有全为负数的数据[要求]时间复杂度为,空间复杂度为示例1输入[1, -2, 3, 5, -2, 6, -1]返回值12..原创 2021-04-07 15:10:32 · 110 阅读 · 1 评论 -
牛客网编程高频题12——NC68跳台阶
目录跳台阶题目描述方法一:递归方法二:循环跳台阶题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。方法一:递归递推关系为斐波拉契数列:F(n)=F(n-1)+F(n-2)public class Solution { public int JumpFloor(int target) { if(target==1) { ret..原创 2021-04-07 10:56:34 · 117 阅读 · 0 评论 -
牛客网编程高频题11——NC76用两个栈实现队列
目录用两个栈实现队列题目描述方法用两个栈实现队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。方法队列是先进先出,栈是先进后出用栈存储元素,然后用另一个栈对该栈的元素进行反转即可import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); S..原创 2021-04-07 10:42:25 · 88 阅读 · 0 评论 -
牛客网编程高频题10——NC33合并有序链表
目录合并有序链表题目描述示例1输入返回值示例2输入返回值备注方法一:遍历方法二:递归合并有序链表题目描述将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的,且合并后新链表依然有序。示例1输入{1},{2}返回值{1,2}示例2输入{2},{1}返回值{1,2}备注链表的数据结构如下class ListNode { int val; ..原创 2021-04-07 10:17:16 · 87 阅读 · 1 评论 -
牛客网编程高频题9——NC61两数之和
目录两数之和题目描述示例1输入返回值方法一:遍历方法二:HashMap两数之和题目描述给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足index1 小于index2。注意:下标是从1开始的假设给出的数组中只存在唯一解例如:给出的数组为 {20, 70, 110, 150},目标值为90输出 index1=1, index2=2示例1...原创 2021-04-07 09:28:11 · 341 阅读 · 1 评论 -
牛客网编程高频题8——NC88寻找第K大
目录寻找第K大题目描述示例1输入返回值方法:快速排序寻找第K大题目描述有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。示例1输入[1,3,5,2,2],5,3返回值2方法:快速排序思路就是快速排序的划分,每次划分都会最终确定一个元素的位置,如果这个位置正好是第K大数的位置,那么就找到了 如果小于第K大数..原创 2021-04-06 20:29:11 · 240 阅读 · 0 评论 -
牛客网编程高频题7——NC15求二叉树的层序遍历
求二叉树的层序遍历题目描述给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)例如:给定的二叉树是{3,9,20,#,#,15,7},其对应的树结构如图,该二叉树层序遍历的结果是[[3],[9,20],[15,7]]示例一输入{1,2}返回值[[1],[2]]示例二输入{1,2,3,4,#,#,5}返回值[[1],[2,3],[4,5]]其中树的数据结构为 public cl...原创 2021-04-06 19:19:37 · 116 阅读 · 0 评论 -
牛客网编程高频题6——NC119最小的K个数
目录最小的K个数题目描述示例1输入返回值方法一:快排方法二:堆排序方法三:归并排序最小的K个数题目描述给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组示例1输入[4,5,1,6,2,7,3,8],4 返回值[1,2,3,4]方法一:快排import java.util.Array...原创 2021-04-03 21:31:36 · 171 阅读 · 0 评论 -
牛客网编程高频题5——NC45二叉树遍历
目录二叉树先序、中序、后序遍历题目描述示例1输入返回值备注二叉树数据结构方法一:递归方法二:递归改进二叉树先序、中序、后序遍历题目描述分别按照二叉树先序,中序和后序打印所有的节点。示例1输入{1,2,3}返回值[[1,2,3],[2,1,3],[2,3,1]]备注二叉树数据结构public class TreeNode { int val = 0; TreeNode le...原创 2021-04-03 20:28:54 · 130 阅读 · 0 评论 -
牛客网编程高频题4——NC4判断链表是否有环
目录判断链表是否有环题目描述备注方法一:HashMap方法二:快慢指针判断链表是否有环题目描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。你能给出空间复杂度的解法么?备注链表数据结构如下:struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }..原创 2021-04-02 10:37:58 · 97 阅读 · 0 评论 -
牛客网编程高频题3——NC93设计LRU缓存结构
设计LRU缓存结构题目描述设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构 get(key):返回key对应的value值要求:set和get方法的时间复杂度为O(1) 某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。 当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。若opt=1,接下来两个整数x, y,表示set(x, ...原创 2021-04-02 09:07:00 · 205 阅读 · 0 评论 -
牛客网编程高频题2——NC140排序问题
排序题目描述给定一个数组,请你编写一个函数,返回该数组排序后的形式。示例一输入[5,2,3,1,4]返回值[1,2,3,4,5]示例2输入[5,1,6,2,5]返回值[1,2,5,5,6]备注:数组的长度不大于100000,数组中每个数的绝对值不超过10^9方法一:快速排序import java.util.*;public class Solution { public int[] MySort (.原创 2021-03-23 16:25:46 · 263 阅读 · 1 评论 -
牛客网编程高频题1——NC78反转链表
while(pHead.next!=null)/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/import java.util.Stack;public class Solution { public ListNode ReverseList(ListNode head) { ...原创 2021-03-22 15:34:38 · 195 阅读 · 0 评论