- 博客(10)
- 资源 (1)
- 收藏
- 关注
原创 牛客题霸NC119题解
最小的K个数 牛客题霸NC119 难度:Medium 题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 输入 [4,5,1,6,2,7,3,8],4 返回值 [1,2,3,4] 解决思路 使用一个容量为K的最大堆,程序如下: import java.util.*; public class Solution { public ArrayList<Integer> GetLeastNumbers_S
2020-11-09 15:15:27
293
原创 牛客题霸NC105题解
二分查找 牛客题霸NC105 难度:Easy 题目描述 请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。 示例 输入 5,4,[1,2,4,4,5] 返回值 3 说明 输出位置从1开始计算 题目答案 很简单的二分查找,关键看三个地方就行了: low < high 还是low <= high mid是左倾还是右倾 向左收缩条件及向右收缩条件 import java.util.*; public cla
2020-11-09 15:14:56
591
1
原创 牛客题霸NC93题解
设计LRU缓存结构 牛客题霸NC93 难度:Medium 题目描述 设计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
2020-11-09 15:14:20
450
原创 牛客题霸NC88题解
寻找第K大 牛客题霸NC88 难度:Medium 题目描述 有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。 示例1 输入 [1,3,5,2,2],5,3 返回值 2 题目解答 利用快排思想 通过快速排序的partion与二分思想找到第K大的数,代码如下: import java.util.*; public class Finder { public int findKth
2020-11-09 15:13:51
284
原创 牛客题霸NC68题解
跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 示例1 输入 1 返回值 1 示例2 输入 4 返回值 5 解决思路 就是个斐波那契数列,代码如下: public class Solution { public int JumpFloor(int target) { if(target <= 1){ return 1; }
2020-11-09 15:13:19
214
原创 牛客题霸NC45题解
实现二叉树先序中序后序遍历 牛客题霸NC45 难度:Easy 题目描述 分别按照二叉树先序,中序和后序打印所有的节点。 示例 输入 {1,2,3} 返回值 [[1,2,3],[2,1,3],[2,3,1]] 备注: n≤10^6 题目答案 import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } *
2020-11-09 15:12:39
261
原创 牛客题霸NC33题解
合并有序链表 牛客题霸NC33 难度:Easy 题目描述 将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的。 输入 {1},{} 返回值 {1} 输入 {1},{1} 返回值 {1,1} 代码解决 算法入门基础题,尾插法扫描拼接即可: import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class So
2020-11-09 15:12:07
189
原创 牛客题霸NC15题解
求二叉树的层序遍历 牛客题霸NC15 难度:Medium 二叉树的层序遍历使用队列来实现,代码如下: import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * * @param root TreeNode类
2020-11-09 15:11:32
280
原创 牛客题霸NC04题解
判断链表中是否有环 牛客题霸NC93 难度:Easy 题目描述 判断给定的链表中是否有环,你能给出空间复杂度[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tufwc43W-1604905749303)(https://www.nowcoder.com/equation?tex=O(1)]%5C)的解法么? 题目解答 1. Set+遍历 遍历链表,将遍历的每个节点放到一个Set里。如果遍历过程中发现Set中已经存在该节点,则代表链表存在环;如果遍历到末尾,则代表链表无环。
2020-11-09 15:10:25
237
2
原创 牛客题霸反转链表题解
反转链表 牛客题霸NC78 难度:Easy 题目描述: 输入一个链表,反转链表后,输出新链表的表头。 示例: 输入: {1, 2, 3} 输出: {3, 2, 1} 解决方法: 1.通过栈+尾插法实现 可以将所有节点入栈,然后逐个出栈,插入到链表尾部。 import java.util.*; /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.va
2020-11-05 17:27:45
190
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人