- 博客(12)
- 收藏
- 关注
原创 弗兰西刷题日记-剑指offer-41-数据流的中位数
利用一个大顶堆(存储左半边元素)和一个小顶堆(存储右半边元素)import java.util.*;class MedianFinder { /** initialize your data structure here. */ PriorityQueue<Integer> maxHeap; PriorityQueue<Integer> minHeap; public MedianFinder() { maxHeap =
2020-10-17 21:23:21
107
原创 弗兰西刷题日记-剑指offer-40-最小的k个数
解法一:构造最大堆(堆顶元素是堆中元素最大值)import java.util.*;class Solution { public int[] getLeastNumbers(int[] arr, int k) { if(arr == null || arr.length < k || k == 0) return new int[0]; PriorityQueue<Integer> maxHeap = new Prior
2020-10-17 19:00:51
99
原创 弗兰西刷题日记-剑指offer-59(2)-队列的最大值
import java.util.*;class MaxQueue { private Queue<Integer> queue; private LinkedList<Integer> max; public MaxQueue() { queue = new LinkedList<>(); max = new LinkedList<>(); } public int max
2020-10-16 22:03:04
140
原创 弗兰西刷题日记-剑指offer-30-包含min函数的栈
import java.util.*;class MinStack { private Stack<Integer> stack; private Stack<Integer> minStack; /** initialize your data structure here. */ public MinStack() { stack = new Stack<>(); minStack = new Sta
2020-10-16 17:13:39
107
原创 弗兰西刷题日记-剑指offer-09-两个栈实现队列
import java.util.*;class CQueue { private Stack<Integer> stack1; private Stack<Integer> stack2; public CQueue() { stack1 = new Stack<>(); stack2 = new Stack<>(); } public void appendTail(in
2020-10-16 17:04:20
137
原创 计算机网络——ARP(ARP过程、欺骗、解决办法)
ARP协议过程ARP协议是通过目的IP地址得到其MAC地址的一种网络协议,每台主机都会维护一个ARP缓冲区,缓冲区里有ARP缓存表,表中包含了三个字段(IP地址、IP地址对应的MAC地址、类型(静态、动态)),ARP协议过程为:主机在发包之前查询ARP映射表,如果目的IP地址存在,将对应的MAC地址作为目的MAC地址进行数据包的发送。如果不存在,就会构建一个ARP请求报文段,其中包含目的IP地址,源IP地址,源MAC地址等信息。然后在网段中通过广播包的形式发送(目的MAC地址置为全F),网段中其他
2020-09-29 10:29:51
2247
原创 斐波那契避免爆栈
题目来源题目信息思路介绍可以从递归和迭代两个来考虑,传统递归的话容易发生爆栈,所以本题考虑使用迭代的方式。代码展示class Solution { public int fib(int n) { if(n < 0){ return -1; } else if(n == 0){ ...
2020-05-03 19:20:24
271
原创 栈模拟队列尾插和头删
题目来源题目信息思路介绍这道题简单难度,关键是联想到栈和队列的区别,栈——先进后出,队列——先进先出。所以要想使用栈来模拟队列,我们可以想到使用两个栈不断地“倒腾”数据:在添加元素到尾部的时候,若是栈一有元素,将全部元素压入栈二,然后再直接将元素压入栈二在删除队列头部元素时,将栈二的元素全部出栈到栈一,此时栈一顶部元素就是队列头部元素代码展示class CQueue{ S...
2020-05-03 19:00:00
397
原创 快速排序的精美写法
class QUICKSORT{ public void quickSort(int[] array, int leftBound, int rightBound){ if(leftBound >= rightBound) return; int middle = patition(int[] array, int leftBound, int rightBound); qui...
2020-04-14 23:05:09
154
原创 原型模式与深浅拷贝(克隆)
原型模式简述先简单的说一下原型模式,原型模式属于创建型模式,和单例模式属于同一个大类,都是用来生成的对象的,与 java 中的 new 不同,原型模式会把一个对象的属性值拷贝一份复制给另外一个对象。而 new 需要传入需要的参数,不如原型模式方便。示例代码//需要实现 Cloneable 接口class Test implements Cloneable{ public int t...
2020-04-14 00:08:47
234
原创 单例模式的五大护法
饿汉式为何叫作饿汉式,意思是很饥饿,那么就会一开始就准备好,以防之后吃不饱,名字由此而来。代码如下class HUNGRYMAN{ //这里实例化方法要设置成私有的,以防外部直接new对象,破坏单例 private HUNGRYMAN(){ } //这里即为一开始就创建好对象,需要调用的时候,直接返回,不需要新创建 private static HUNGRYM...
2020-04-13 23:10:36
214
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人