牛客网题库
Dorothy_Xue
这个作者很懒,什么都没留下…
展开
-
牛客网刷题(JAVA) 16:链表中倒数第k个结点
难度系数⭐时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容输入一个链表,输出该链表中倒数第k个结点。思路首先遍历一下链表,记录链表长度。然后倒数第k个节点,即第len-k+1个节点。package nowcoder;public class No16 { public static class ListNode {...原创 2020-04-29 20:56:17 · 174 阅读 · 0 评论 -
牛客网刷题(JAVA) 26:复杂链表的复制
难度系数⭐⭐难在思路时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。思路利用哈希表进行复制,其中哈希表中,key存放链表原节点,value存放复制节点(new一个新节点,值为key中节点的值,没有next以及ra...原创 2020-05-15 11:01:31 · 219 阅读 · 0 评论 -
牛客网刷题(JAVA) 25:二叉树中和为某一值的路径
难度系数⭐⭐⭐难在思路时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路递归遍历,在每一次深入遍历时,目标数值将会变化,即目标数值-当前数值,若遍历至叶子节点,且此时目标数值变化为0,则该路径即为待查找的路径。package nowcoder;import java.util.Array...原创 2020-05-15 10:22:04 · 186 阅读 · 0 评论 -
牛客网刷题(JAVA) 24:二叉搜索树的后序遍历序列
难度系数⭐⭐⭐难在思路时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容输入一个非空整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路二叉搜索树,即以该树任意节点为根的子树,子树的左子树的数值都比根小,子树的右子树的数值都比根大。这是二叉搜索树的特征。结合后序遍历的特点,则该题解题思路是:数组最后一个数值是树的根节点,前边的数值左边部分属于左子树,且数值小于根节点...原创 2020-05-14 22:57:44 · 211 阅读 · 0 评论 -
牛客网刷题(JAVA) 23:从上往下打印二叉树
难度系数⭐⭐时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路设置一个队列,遍历树,初始将根节点加入到队列中。当队列非空时,将队头元素弹出,判断弹出元素是否有左、右孩子,若有,则将其加入队列(注意顺序)。循环至队列为空结束。package nowcoder;import java.util.ArrayList;import java.util.LinkedList;impor...原创 2020-05-10 23:01:32 · 181 阅读 · 0 评论 -
牛客网刷题(JAVA) 22:栈的压入、弹出序列
难度系数⭐⭐时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路设置两个指针分别指向当前在两个序列中的当前处理数据。设置一个栈结构,初始压入第一个...原创 2020-05-10 22:19:49 · 287 阅读 · 0 评论 -
牛客网刷题(JAVA) 21:包含min函数的栈
难度系数⭐⭐难在思路时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。思路设置两个栈,一个用于正常存储数据的栈stack,另一个用于记录当前栈中所有元素的最小值min。每次stack入栈时,min也入栈,但是在入栈的时候要比较待入栈的值与min顶部的数值,取...原创 2020-05-09 15:50:20 · 171 阅读 · 0 评论 -
牛客网刷题(JAVA) 20:二叉树的镜像
难度系数⭐⭐难在思路时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容操作给定的二叉树,将其变换为源二叉树的镜像。输入描述二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5...原创 2020-05-08 22:01:45 · 197 阅读 · 0 评论 -
牛客网刷题(JAVA) 19:树的子结构
难度系数⭐⭐⭐难在思路时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路递归实现。首先判断A树当前根节点是否与B树根节点值相同,若相同则判断B树是否含于以这个节点为根节点的A树,若含于则返回true,否则递归判断A树根节点的左子树与右子树。...原创 2020-05-05 23:12:28 · 201 阅读 · 0 评论 -
牛客网刷题(JAVA) 18:合并两个排序的链表
难度系数⭐时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路依次对比两个链表的值,更小的值加入结果链表中。注意临界情况即可。package nowcoder;public class No19 { public static...原创 2020-05-05 22:11:31 · 201 阅读 · 0 评论 -
牛客网刷题(JAVA) 17:反转链表
难度系数⭐时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容输入一个链表,反转链表后,输出新链表的表头。思路设置两个指示指针pre和pos。可以理解为pre.next指向head头节点,head.next指向pos,利用三个指针的位置关系进行反转。画个图思路就明显了。package nowcoder;public class ...原创 2020-05-05 21:42:38 · 256 阅读 · 0 评论 -
牛客网刷题(JAVA) 16:重建二叉树
难度系数⭐⭐⭐难在思路时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路前序遍历的首个节点必然是整...原创 2020-05-05 21:08:50 · 200 阅读 · 1 评论 -
牛客网刷题(JAVA) 15:最小的k个数
难度系数⭐时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。思路利用归并排序排好序后,依次取出k个数即可。package nowcoder;import java.util.ArrayList;impo...原创 2020-04-13 22:09:36 · 257 阅读 · 0 评论 -
牛客网刷题(JAVA) 14:数组中出现次数超过一半的数字
难度系数⭐⭐时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路(1)时间复杂度O(N*logN)利用归并排序排好序,若存...原创 2020-04-12 22:59:10 · 253 阅读 · 0 评论 -
牛客网刷题(JAVA) 13:顺时针打印矩阵
难度系数⭐⭐时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如:如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16则依次打印出数字:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10....原创 2020-04-12 17:58:07 · 251 阅读 · 0 评论 -
牛客网刷题(JAVA) 12:数值的整数次方
难度系数⭐时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0思路全面考察指数。浮点类型的整数次幂可以分为6种情况: exponent<0 exponent=0...原创 2020-04-11 21:38:54 · 136 阅读 · 0 评论 -
牛客网刷题(JAVA) 11:用两个栈实现队列
难度系数⭐时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路队列的规则为“先进先出”,而栈为“先进后出”。所以在用栈实现队列时,可以用一个栈正常push,当要pop时,将所有元素依次倒入另外一个栈中,这样第一个栈的栈底元素变成第二栈的栈顶元素,pop...原创 2020-04-10 22:20:02 · 212 阅读 · 0 评论 -
牛客网刷题(JAVA) 10:调整数组顺序使奇数位于偶数前面
难度系数⭐时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路遍历数组,分别将奇数和偶数顺序记下,然后依次将奇数和偶数重新填入数组种。注意,使用随机快排无法实现次序不变...原创 2020-04-10 21:53:51 · 155 阅读 · 0 评论 -
牛客网刷题(JAVA) 9:从尾到头打印链表
难度系数⭐⭐【难在不会使用this】时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容输入一个链表,按链表从尾到头的顺序返回一个ArrayList。思路遍历链表,若当前节点非空,观察下一个节点,并保存当前信息(用于递归)。/*** public class ListNode {* int val;* ...原创 2020-04-09 23:16:58 · 132 阅读 · 0 评论 -
牛客网刷题(JAVA) 8:矩形覆盖
难度系数⭐⭐【难在思路】时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:思路斐波那契数列的应用。若第一个矩形填的是2*1的,则剩余f(n-1)个没填...原创 2020-04-09 21:58:11 · 176 阅读 · 1 评论 -
牛客网刷题(JAVA) 7:变态跳台阶
难度系数⭐⭐⭐【难在思路】时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路上一题的延伸。若台阶数n=1,则只有跳1步一种方法。f(1)=1若台阶数n=2,则有跳2次1步和跳1次2步共2种方法。f(2)=f(2-1)...原创 2020-04-09 21:02:34 · 186 阅读 · 0 评论 -
牛客网刷题(JAVA) 6:跳台阶
难度系数⭐⭐⭐【难在思路】时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路类似于斐波那契数列。若台阶数n=1,则只有跳1步一种方法。若台阶数n=2,则有跳2次1步和跳1次2步共2种方法。若台阶数n>...原创 2020-04-07 22:06:44 · 191 阅读 · 0 评论 -
牛客网刷题(JAVA) 5:斐波那契数列
难度系数⭐时间限制C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容斐波那契数列格式为:1、1、2、3、5、8、13、21、34、......大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39思路递归实现。F(n) = F(n-1) + F(n-2)package no...原创 2020-04-07 21:39:22 · 442 阅读 · 1 评论 -
牛客网刷题(JAVA) 4:旋转数组的最小数字
难度系数⭐时间限制C/C++ 3秒,其他语言6秒空间限制:C/C++ 32M,其他语言64M题目内容把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路按...原创 2020-04-07 21:13:15 · 195 阅读 · 0 评论 -
牛客网刷题(JAVA) 3:替换空格
难度系数⭐⭐【难在一开始不知道StringBuffer的使用】时间限制时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路设置一个新字符串A,遍历给定字符串B,若B中当前字符为...原创 2020-04-06 22:17:29 · 264 阅读 · 0 评论 -
牛客网刷题(JAVA) 2:二维数组中的查找
难度系数:⭐时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数思路:遍历每一列,然后对每一列进行二分查找。package nowcoder;i...原创 2020-04-04 23:57:40 · 217 阅读 · 0 评论 -
牛客网刷题(JAVA) 1:字符串最后一个单词的长度
难度系数:⭐时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M题目内容:计算字符串最后一个单词的长度,单词以空格隔开。输出描述:整数N,最后一个单词的长度。示例输入hello world输出5思路:将字符串按空格分开,返回字符串数组最后一个元素的字符串长度。import java.util.Scanner; pub...原创 2020-04-04 22:30:55 · 246 阅读 · 0 评论