【牛客网】
Xzzzzzzzo
喵喵女程序媛
展开
-
NC66 两个链表的第一个公共结点
描述输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)数据范围:n≤1000n≤1000要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n)例如,输入{1,2,3},{4,5},{6,7}时,两个无环的单向链表的结构如下图所示:可以看到它们的第一个公共结点的结点值为6,所以返回结点值为6的结点。/*public class ListNod...原创 2022-02-22 12:02:37 · 238 阅读 · 0 评论 -
NC127 最长公共子串
目录描述示例1思想:动态规划代码描述给定两个字符串str1和str2,输出两个字符串的最长公共子串题目保证str1和str2的最长公共子串存在且唯一。数据范围:1≤∣str1∣,∣str2∣≤50001≤∣str1∣,∣str2∣≤5000要求: 空间复杂度O(n2)O(n2),时间复杂度O(n2)O(n2)示例1输入:"1AB2345CD","12345EF"复制返回值:"2345"思想:动态规划代码import j...原创 2022-02-20 17:06:43 · 280 阅读 · 0 评论 -
NC14 按之字形顺序打印二叉树
描述给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)数据范围:0≤n≤15000≤n≤1500,树上每个节点的val满足∣val∣<=100∣val∣<=100要求:空间复杂度:O(n)O(n),时间复杂度:O(n)O(n)例如:给定的二叉树是{1,2,3,#,#,4,5}该二叉树之字形层序遍历的结果是[[1],[3,2],[4,5]]import java.util.*;/*publi.原创 2022-02-19 21:59:28 · 64 阅读 · 0 评论 -
NC53 删除链表的倒数第n个节点
目录描述示例1思想:双指针代码知识点链表双指针描述给定一个链表,删除链表的倒数第n个节点并返回链表的头指针例如,给出的链表为:1→2→3→4→51→2→3→4→5,n=2n=2.删除了链表的倒数第nn个节点之后,链表变为1→2→3→51→2→3→5.数据范围:链表长度0≤n≤10000≤n≤1000,链表中任意节点的值满足0≤val≤1000≤val≤100要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n)备注:题...原创 2022-02-18 13:13:25 · 527 阅读 · 0 评论 -
NC52 有效括号序列
目录描述示例1示例2思想:栈代码描述给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。数据范围:字符串长度 0≤n≤100000≤n≤10000要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)示例1输入:"["复制返回值:false复制示例2输入:原创 2022-02-15 12:23:24 · 214 阅读 · 0 评论 -
NC3 链表中环的入口结点
目录描述输入描述:返回值描述:思想:描述给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。数据范围:n≤10000n≤10000,1<=结点值<=100001<=结点值<=10000要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n)例如,输入{1,2},{3,4,5}时,对应的环形链表如下图所示:可以看到环的入口结点的结点值为3,所以返回结点值为3的结点。输入描述:输入分为2...原创 2022-02-12 11:13:13 · 89 阅读 · 0 评论 -
NC22 合并两个有序的数组
题目 题解(53) 讨论(69) 排行简单通过率:35.21%时间限制:1秒空间限制:32M知识点数组双指针描述给出一个有序的整数数组 A 和有序的整数数组 B ,请将数组B合并到数组 A 中,变成一个有序的升序数组数据范围:0≤n,m≤1000≤n,m≤100,∣Ai∣<=100∣Ai∣<=100,∣Bi∣<=100∣Bi∣<=100注意:1.保证 A 数组有足够的空间存放 B 数组的元素, A 和 B 中初始的元素...原创 2022-02-11 17:18:45 · 174 阅读 · 0 评论 -
NC4 判断链表中是否有环
题目 题解(213) 讨论(363) 排行简单通过率:38.83%时间限制:1秒空间限制:32M知识点链表描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。数据范围:链表长度0≤n≤100000≤n≤10000,链表中任意节点的值满足∣val∣<=100000∣val∣<=100000要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n)输入分为两部分,第一部分为链表,第二部分代表是否有环,然后将...原创 2022-02-09 13:10:12 · 640 阅读 · 0 评论 -
NC41 最长无重复子数组
描述给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组数据范围:0≤arr.length≤1050≤arr.length≤105,0<arr[i]≤1050<arr[i]≤105要求:空间复杂度O(n)O(n),时间复杂度O(nlogn)O(nlogn)示例1输入:[2,3,4,5]复制返回...原创 2022-02-06 15:05:37 · 419 阅读 · 0 评论 -
NC19 连续子数组的最大和
目录描述示例1思想:动态规划代码题目 题解(179) 讨论(1k) 排行简单通过率:39.47%时间限制:2秒空间限制:64M知识点动态规划贪心描述输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。数据范围:1<=n<=2×1051<=n<=2×105−100<=a[i]<=100−100<=a[i]<=100要求:时间复杂度为...原创 2022-02-05 11:45:12 · 744 阅读 · 0 评论 -
NC50 链表中的节点每k个一组翻转
NC50链表中的节点每k个一组翻转题目 题解(134) 讨论(266) 排行中等通过率:37.91%时间限制:1秒空间限制:64M知识点链表描述将给出的链表中的节点每 k个一组翻转,返回翻转后的链表如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。数据范围:0≤n≤20000≤n≤2000,1≤k≤20001≤k≤2000,链表中每个元素都满足0≤val≤10000≤val≤1000要求空...原创 2022-01-30 14:13:47 · 75 阅读 · 0 评论 -
NC68 跳台阶
目录描述示例1思想:动态规划代码描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。数据范围:1≤n≤401≤n≤40要求:时间复杂度:O(n)O(n) ,空间复杂度: O(1)O(1)示例1输入:2复制返回值:2复制说明:青蛙要跳上两级台阶有两种跳法,分别是:先跳一级,再跳一级或者直接跳两级。因此答案为2 思想:动态规划代码public cla原创 2022-01-29 17:29:38 · 457 阅读 · 0 评论 -
NC76 用两个栈实现队列
目录描述示例1示例2描述用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。数据范围:n≤1000n≤1000要求:存储n个元素的空间复杂度为O(n)O(n),插入与删除的时间复杂度都是O(1)O(1)示例1输入:["PSH1","PSH2","POP","POP"]复制返回值:1,2复制说明...原创 2022-01-27 14:37:42 · 53 阅读 · 0 评论 -
NC33 合并两个排序的链表
目录描述示例1示例2示例3思想:两个比较,小的加入新链表中代码描述输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。数据范围:0≤n≤10000≤n≤1000,−1000≤节点值≤1000−1000≤节点值≤1000要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n)如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},转换过程如下图...原创 2022-01-26 13:47:49 · 72 阅读 · 0 评论 -
NC61 两数之和
目录描述示例1示例2思想:哈希,相亲-没找到自己心爱的人就进入哈希表,等待心爱的人找自己代码知识点数组哈希描述给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。(注:返回的数组下标从1开始算起,保证target一定可以由数组里面2个数字相加得到)数据范围:2≤len(numbers)≤1052≤len(numbers)≤105,−10≤numbersi≤109−10≤numbersi..原创 2022-01-23 12:08:01 · 275 阅读 · 0 评论 -
NC88 寻找第K大
目录描述示例1示例2思想:快速排序代码描述有一个整数数组,请你根据快速排序的思路,找出数组中第 k 大的数。给定一个整数数组 a ,同时给定它的大小n和要找的 k ,请返回第 k 大的数(包括重复的元素,不用去重),保证答案存在。要求:时间复杂度O(nlogn)O(nlogn),空间复杂度O(1)O(1)数据范围:0≤n≤10000≤n≤1000,1≤K≤n1≤K≤n,数组中每个元素满足0≤val≤100000000≤val≤10000000示例1...原创 2022-01-22 12:18:20 · 357 阅读 · 0 评论 -
NC15 求二叉树的层序遍历
目录描述思想:层序遍历-队列代码知识点树广度优先搜索(BFS)描述给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)例如:给定的二叉树是{3,9,20,#,#,15,7},该二叉树层序遍历的结果是[[3],[9,20],[15,7]]思想:层序遍历-队列代码import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode .原创 2022-01-20 12:24:39 · 79 阅读 · 0 评论 -
NC119 最小的K个数.牛客网
目录描述示例1示例2示例3思想:快速排序、堆排序-优先级队列、手写大顶堆代码描述给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。数据范围:0≤k,n≤100000≤k,n≤10000,数组中每个数的大小0≤val≤10000≤val≤1000要求:空间复杂度 O(n)O(n) ,时间复杂度 O(nlogn)O(nlogn)示例1原创 2022-01-19 11:57:03 · 120 阅读 · 0 评论 -
NC45 实现二叉树先序,中序和后序遍历.牛客网
目录描述示例1思想:递归代码描述给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点。数据范围:0≤n≤10000≤n≤1000,树上每个节点的val值满足 0≤val≤1000≤val≤100要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)样例解释:如图二叉树结构示例1输入:{1,2,3}复制返回值:[[1,2,3],[2思想:递归代码import java.util.*;/* * pub原创 2022-01-18 14:52:36 · 444 阅读 · 0 评论 -
NC93 设计LRU缓存结构
目录描述示例1思想:哈希表+自定义双向链表代码 描述 设计LRU(最近最少使用)缓存结构,该结构在构造时确定大小,假设大小为 k ,并有如下两个功能1. set(key, value):将记录(key, value)插入该结构2. get(key):返回key对应的value值提示:1.某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的,然后都会刷新缓存。2.当缓存的大小超过k时,移除最不经常使用的记录。3.输入一个二维数组与k,原创 2022-01-17 12:30:41 · 66 阅读 · 0 评论 -
NC140 排序
目录描述示例1示例2思想:快速排序代码描述给定一个长度为 n 的数组,请你编写一个函数,返回该数组按升序排序后的结果。数据范围:0≤n≤1050≤n≤105,数组中每个元素都满足0≤val≤1090≤val≤109要求:时间复杂度O(nlogn)O(nlogn),空间复杂度O(n)O(n)示例1输入:[5,2,3,1,4]复制返回值:[1,2,3,4,5]复制示例2输入:[5,1,6,2,5]复制返回值:...原创 2022-01-16 15:48:05 · 420 阅读 · 0 评论 -
NC78 反转链表 - 牛客
目录描述示例思想:迭代、递归代码知识点链表描述给定一个单链表的头结点pHead,长度为n,反转该链表后,返回新链表的表头。数据范围: n≤1000n≤1000要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n) 。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。以上转换过程如下图所示:示例输入:{1,2,3}返回值:{3,2,1}思想:迭代、递归代码原创 2022-01-14 11:37:46 · 157 阅读 · 0 评论 -
每日一题- NC1 大数加法 - 牛客网
目录描述示例1示例2思想:字符串逐位相加代码知识点字符串模拟描述以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。数据范围:len(s),len(t)≤100000len(s),len(t)≤100000,字符串仅由'0'~‘9’构成要求:时间复杂度 O(n)O(n)示例1输入:"1","99"返回值:"100"说明:1+99=100 示例2输入:"114514",""返回值:"原创 2022-01-13 12:05:05 · 279 阅读 · 0 评论