牛客网习题
加加大了
这个作者很懒,什么都没留下…
展开
-
牛客网剑指offer习题(最小的k个数&里连续子数组的最大和)
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。分析:首先是对数组进行排序,在筛选出值最小的k个数。import java.util.ArrayList;import java.util.Stack;import java.util.SortedSet;import java.util.Arrays;public class Solution { public ArrayList<Integer> G原创 2020-07-13 23:08:12 · 322 阅读 · 0 评论 -
牛客网剑指Offer(字符串的排列&数组中次数超过一半的元素)
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。分析:首先从字符串的第一个元素开始遍历,对第i个元素,将除过该元素后的子字符串中的元素进行排列。使用递归对子字符串中的每个元素继续按照上面的方法进行排序,递归直到子字符串中剩一个元素,将这一个元素与其他元素交换位置,每次交换后将交换了的元素与其他元素进行连接,并在result数组中进行查找,如果结果数组中没有,则将该字符串加到结果数原创 2020-07-09 22:02:59 · 143 阅读 · 0 评论 -
牛客网剑指Offer(二叉搜索树与双向链表)
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。分析:对二叉搜索树进行中序遍历,递归操作。/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public c原创 2020-07-09 09:24:27 · 84 阅读 · 0 评论 -
牛客网剑指offer习题(二叉树中和为某一值的路径&复杂链表的复制)
1、输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。分析:需要输出一个二叉树中结点值的和为输入整数的所有路径,每个路径都定义是一条从根节点到叶节点的序列。步骤:1>深度遍历二叉树,将遍历得到的每条序列都放入一个数组中2>在每次遍历的时候,每遍历到一个节点,将该节点放入一个列表中,并用这个整数减去该节点的值。对每个节点的左右子树节点进行递归遍历,重复以上的操作,直到叶子结点且该整数变原创 2020-07-08 20:12:38 · 96 阅读 · 0 评论 -
牛客网错题(4)
1.在OSI七层模型中,网络层的主要功能是A.在信道上传输原始的比特流B.确保到达对方的各段信息正确无误C.确定数据包从源到目的如何选择路由D.加强物理层数据传输原始比特流的功能并进行流量控制分析:在信道上传输原始的比特流(物理层)确保到达对方的各段信息正确无误(传输层)确定数据包从源到目的如何选择路由(网络层)加强物理层数据传输原始比特流的功能并进行流量控制(数据链路层)因此选择C2.一个TCP连接总是以1KB的最大段长发送TCP段,发送方有足够多的数据要发送。当拥塞窗口为16KB时原创 2020-06-25 22:42:04 · 2764 阅读 · 0 评论 -
牛客网剑指Offer(二叉搜索树的后序遍历序列)
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。分析:本题有两种方法,分别是递归和非递归方法:1.递归的方法:由于二叉搜索树中左子树的值都比根节点小,右子树都比根节点大,使用后序遍历时最后一个值为根节点的值,所以确定根节点后,遍历序列寻找第一个比根节点值大的数,则该数的左边都比根节点小,为左子树;右边为右子树。遍历右子树序列,寻找是否有比根节点值小的数,如果有则该数组不是后序遍历的结果,否则在左右子树中重复上面原创 2020-06-25 12:08:11 · 86 阅读 · 0 评论 -
牛客网剑指offer(输出矩阵)
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.分析:将一个二维数组中的值一依次顺时针打印,使用旋转魔方的方法,可以每次都输出数组的第一行,然后对数组中剩余的值,每个值都逆时针旋转90度,随后继续输出第一行的数。重复以上的操作直到二维数组中的数都被输出为止。import java.u原创 2020-06-24 15:07:09 · 250 阅读 · 0 评论 -
牛客网剑指Offer算法题(20-22)
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。分析:需要找到一个栈中的值最小的元素,使用两个栈,一个栈A每次传入一个元素,另一个栈B中,如果每次传入的元素小于当前最小的元素,则将该元素传入。需要定义一个当前最小值的变量temp。做以上的操作,直到所有的元素都进入栈A中。最后将栈B中的栈顶元素取出就是最小元素。import java.util.Stack;.原创 2020-06-23 11:11:22 · 110 阅读 · 0 评论 -
牛客网错题(3)
1.某单CPU系统中有输入和输出设备各1台,现有3个并发执行的作业,每个作业的输入、计算和输出时间均分别为2ms、3ms和4ms,且都按输入、计算和输出的顺序执行,则执行完3个作业需要的时间最少是 。A.15msB.17msC.22msD.27ms分析:按流水线执行时所需时间最短。流水线计算公式为:1条指令执行时间+(指令条数-1)*流水线周期。1条指令执行时间是完整的输入+计算+输出时间,也就是2ms+3ms+4ms=9ms流水线的周期为执行时间最长的一段,也就是4ms所以按流水线执行原创 2020-06-20 23:08:29 · 6585 阅读 · 0 评论 -
牛客网错题总结(2)
1.假设在n进制下,下面的等式成立,n值是()240*12=2880A.19B.18C.17D.16E.15F.以上都对分析:假设为n进值则 [2*(n^2 )+4*(n^1)+0] * [1n+2]=2(n3)+8*(n2)+8*(n^1)化简后居然为很等式 ,n为任一值2.一种既有利于短作业又兼顾长期作业的调度方式是()A.先来先服务B.均衡调度C.最短作业优先D.最高响应比优先分析:响应比最高者优先算法综合考虑作业的等待时间和计算时间,计算时间短的作业容易得到较高的响应原创 2020-06-19 22:42:28 · 946 阅读 · 0 评论 -
牛客网错题(1)
1.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过()。log2n+1log2n-1log2nlog2(n+1)分析:二分法查找数据每次都将一半的数据删除,因此第一次查找剩余n/2数据,第二次查找剩余n/4数据。由于需要知道最多比较次数,则剩余的数据剩余1个,则通过m次查找后剩余1个数据。(n/2^m)=1,通过计算得到log2(n)=1,在与最后一个数据比较后,得到m=log2(n)+1。因此选第一个答案。2.最小堆[0,3,2,5,7,4,6,8],在删除堆原创 2020-06-19 16:55:39 · 4623 阅读 · 0 评论 -
牛客网剑指offer习题
1.输入一个链表,按链表从尾到头的顺序返回一个ArrayList。(1).使用递归方法/使用递归进行处理import java.util.ArrayList;public class Solution { ArrayList<Integer> arraylist=new ArrayList<Integer>();//实例化一个数组列表arraylist ...原创 2020-04-06 21:48:14 · 400 阅读 · 0 评论