StormAaron的技术站


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

maven的packing参数设置

发表于 2018-12-21 | 分类于 maven
字数统计: 446 | 阅读时长 ≈ 2

前言

项目的打包类型:pom、jar、war🖊

阅读全文 »

未命名

发表于 2018-10-06
字数统计: 1,019 | 阅读时长 ≈ 5

数组

额外链接

* 寻找数组中第二小的元素

priorityQueue 堆

1.排序

1
2
3
4
public static int findKthLargest(int[] nums, int k) {
Arrays.sort(nums);
return nums[nums.length - k];
}1234

时间复杂度为O(nlog(n))。

2.通过堆

1
2
3
4
5
6
7
8
9
10
11
12
public static int findKthLargest(int[] nums, int k) {
PriorityQueue<Integer> q = new PriorityQueue<Integer>(k);
for (int i : nums) {
q.offer(i);

if (q.size() > k) {
q.poll();
}
}

return q.peek();
}123456789101112

时间复杂度为O(nlog(k)),空间复杂度为 O(k) 。

3.快排

若k在基准左边,则在左边快排序,否则在右边快排

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public static int findKthLargest(int[] nums, int k) {
if (k < 1 || nums == null) {
return 0;
}

return getKth(nums.length - k + 1, nums, 0, nums.length - 1);
}

public static int getKth(int k, int[] nums, int start, int end) {

int pivot = nums[end];

int left = start;
int right = end;

while (true) {

while (nums[left] < pivot && left < right) {
left++;
}

while (nums[right] >= pivot && right > left) {
right--;
}

if (left == right) {
break;
}

swap(nums, left, right);
}

swap(nums, left, end);

if (k == left + 1) {
return pivot;
} else if (k < left + 1) {
return getKth(k, nums, start, left - 1);
} else {
return getKth(k, nums, left + 1, end);
}
}

public static void swap(int[] nums, int n1, int n2) {
int tmp = nums[n1];
nums[n1] = nums[n2];
nums[n2] = tmp;
}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748

平均时间复杂度为O(n),最坏情况下为O(n^2)。

——————————- 本文来自 -似曾相识燕归来 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/hzh_csdn/article/details/53446211?utm_source=copy

* 找到数组中第一个不重复出现的整数

合并两个有序数组

重新排列数组中的正值和负值

栈

使用栈计算后缀表达式

逆波兰式:

(a+b)*c-(a+b)/e的后缀表达式为:ab+c*ab+e/-

对栈的元素进行排序

原栈:s1,准备一个辅助栈s2

  1. s1第一次出栈,不进行比较,直接放到s2
  2. 当s1非空,每次从s1弹出a,将s2中顺序不符的值都弹回s1
  3. 将a压入s2
  4. 刚才弹回s1的值都弹回到s2
  5. 若s1空则完成了排序。

判断表达式是否括号平衡

使用栈实现队列

队列

使用队列表示栈

假设有个一串数字a,b,c,d顺序入栈,出来的结果应该是d,c,b,a,有两个队列Q1,Q2,

​ 第一步:随便找一个空的队列Q1,将a放入到Q1,此时Q2中数据为空,Q1里面有a。

​ 第二步:找到空的队列Q2,将b放入,并将 Q1里面的值(a)全部输出,加入到Q2中,此时Q1为空,Q2里面有b,a。

​ 第三步:将c放入到空的队列Q1中,将Q2里面的值(b,a)全部输出,放入到Q1中,此时Q2里面值为空,Q1里面有c,b,a。

​ ……

不断循环就可以用两个队列实现一个栈的功能

对队列的前k个元素倒序

使用队列生成从1到n的二进制数

链表

链表反转

检测链表的环

快慢指针:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* 判断单链表是否存在环
* @param head
* @return
*/
public static <T> boolean isLoopList(ListNode<T> head){
ListNode<T> slowPointer, fastPointer;

//使用快慢指针,慢指针每次向前一步,快指针每次两步
slowPointer = fastPointer = head;
while(fastPointer != null && fastPointer.next != null){ // 若到尾节点则说明无环
slowPointer = slowPointer.next; // 1步
fastPointer = fastPointer.next.next; // 2步

//两指针相遇则有环
if(slowPointer == fastPointer){
return true;
}
}
return false;
}

https://blog.csdn.net/u010983881/article/details/78896293

返回链表倒数的第N个节点

创建两个指向head的指针p q,让p遍历,p先开始移动,p走到第n-1个节点后,p q 一起往后移动

删除聊表中的重复项

图

广度优先、深度优先搜索

图是否为树

计算边数

找到两个顶点的最短路径

树

求树高度

二叉搜索树中第K大的值

查找与根节点距离K的节点

在二叉树中查找给定节点的祖先节点

字典树

哈希表

Restful架构基本概念

发表于 2018-09-30 | 分类于 default
字数统计: 9 | 阅读时长 ≈ 1

前言

前言用>符号标注🖊

阅读全文 »

nginx

发表于 2018-09-30 | 分类于 default
字数统计: 151 | 阅读时长 ≈ 1

前言

前言用>符号标注🖊

阅读全文 »

操作系统

发表于 2018-09-17 | 分类于 操作系统
字数统计: 1,636 | 阅读时长 ≈ 6

前言

前言用>符号标注🖊

阅读全文 »

Java-NIO

发表于 2018-09-02 | 分类于 Java
字数统计: 2,732 | 阅读时长 ≈ 10

前言

NIO面向块(整个缓冲区)
有所有基本类型的Buffer支持
提供新的I/O抽象:Channel
支持锁和内存映射文件的文件访问接口
多路复用非阻塞式的高伸缩性I/O(原来的是阻塞的)🖊

阅读全文 »

计算机网络

发表于 2018-08-12 | 分类于 计算机网络
字数统计: 3,656 | 阅读时长 ≈ 13

前言

TCP/IP协议的体系结构:

  • 应用层 :为特定应用程序提供数据传输服务,例如 HTTP、DNS 等。数据单位为报文。
  • 运输层 :提供的是进程间的通用数据传输服务。传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。
  • 网络层 :为主机间提供数据传输服务,而运输层协议是为主机中的进程提供服务。网络层把运输层传递下来的报文段或者用户数据报封装成分组。(IP层)
  • 网络接口层
    • 数据链路层 :网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供服务。数据链路层把网络层传下来的分组封装成帧。
    • 物理层 :考虑的是怎样在传输媒体上传输数据比特流

🖊

阅读全文 »

SQL

发表于 2018-08-06 | 分类于 数据库
字数统计: 1,268 | 阅读时长 ≈ 5

前言

DML数据操纵语言(INSERT, UPDATE, DELETE)

DDL数据定义语言(CREATE TABLE, VIEW, INDEX, )

DQL数据查询语言(SELECT)

DCL数据控制语言(GRANT, ROLLBACK, COMMIT)🖊

阅读全文 »

Mysql

发表于 2018-08-06 | 分类于 数据库
字数统计: 4,878 | 阅读时长 ≈ 18

前言

Mysql的笔记🖊

阅读全文 »

数据库系统原理

发表于 2018-08-06 | 分类于 数据库
字数统计: 4,994 | 阅读时长 ≈ 18

前言

数据库事务:ACID:原子性、一致性、隔离性、持久性
一致性问题:丢失修改、脏读、不可重复读、幻读
事务隔离级别:未提交读、提交读、可重复读、可串行化
锁:读锁写锁、锁粒度、Mysql 的 7 种锁
Mysql并发控制
1,2,3,BC范式
E-R图

阅读全文 »
12…5
Aaron.H

Aaron.H

Road endless its long and far, I will seek up and down!

46 日志
13 分类
28 标签
RSS
© 2018 Aaron.H
本站访客数:
博客全站共85.3k字