一、AQS是什么? 首先我们来普及一下juc是什么:juc其实就是包的缩写(java.util.concurrnt) 不要被人家唬到了,以为juc是什么一个牛逼的东西。其实指的是包而已 我们可以发现lock包下有三个抽象的类: AbstractOwnableSynchronizer Abstract ...
分类:
其他好文 时间:
2020-07-02 16:12:15
阅读次数:
56
容易想到的暴力解法:把数据都取出来排序,需要n2大小的数组存储 既然数组是有序的,把每一行看成一个有序数组,对这些数组进行归并排序,归并到第k个数为止。 看了题解,了解到优先级队列PriorityQueue可以用于实现归并排序,PriorityQueue底层是一个堆的结构。具体可参考这篇文章 刷算法 ...
分类:
编程语言 时间:
2020-07-02 13:42:16
阅读次数:
51
思路 首先 想到的就是暴力算法,将二维数组拆成一维数组,排序(或者直接放进优先队列)最后竟然过了。。。 因为矩阵在行列方向上都是升序排列的,在有序数组中搜索一个数字常用二分法,所以可以考虑变种的二分法。 二维数组从左下向右上搜索,每次搜索检查一下当前搜遍历到数字范围有没有超过k。 代码 暴力: im ...
分类:
编程语言 时间:
2020-07-02 09:30:14
阅读次数:
57
最近,又重新学习了下Redis,深深被Redis的魅力所折服,我才知道Redis不仅能快还能慢(我想也这么优秀o(╥﹏╥)o),简直是个利器呀。 咳咳咳,大家不要误会,本文很正经的啦! 好了,接下来回到我们的话题,我们都知道Redis是一种基于内存的单进程单线程数据库(Redis6.0开始之后支持多 ...
分类:
其他好文 时间:
2020-07-02 09:18:36
阅读次数:
72
1 定义一个队列 queue<int> q; 2 关于queue的一些函数 取队列的头部 int temp = q.front(); 取队列的长度 int size = q.size(); 向队列添加元素 q.push(3); 删除队列的一个元素 q.pop(); ...
分类:
编程语言 时间:
2020-07-02 00:02:44
阅读次数:
61
剑指 Offer 09. 用两个栈实现队列 思路 把数据在两个栈中分别“折腾”一次,出来的顺序就是队列的顺序。 向stack1中push数据——向队列中添加数据 从stack2中弹出数据——从队列中删除头部数据 代码 import java.util.Stack; class CQueue { St ...
分类:
其他好文 时间:
2020-07-01 23:43:18
阅读次数:
54
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例: 输入: ["CQueue","appendTail","delete ...
分类:
其他好文 时间:
2020-07-01 22:17:02
阅读次数:
57
插入、删除功能实现 /* * 使用单链表;每次插入大约需要比较N/2次; * 插入效率是O(N),删除表头元素效率是O(1) */ public class MySortQueue { // 使用单链表实现 private Entry root; private static class Entry ...
分类:
其他好文 时间:
2020-07-01 20:01:29
阅读次数:
55
进程是资源分配的基本单位,它是程序执行时的一个实例,在程序运行时创建;线程是程序执行的最小单位,是进程的一个执行流,一个线程由多个线程组成 什么是进程 进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。 程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列 ...
分类:
编程语言 时间:
2020-07-01 15:59:28
阅读次数:
55
栈(Stack) 队列(Queue) 线性表 链表 先进后出 先进先出 top (front,rear) (data,link) (prior,next) | 只能在表的一端进行插入和删除操作的线性表 | 只能在表的一端进行插入和在另一端进行删除操作的线性表 |允许在表内任一位置进行插入和删除|| ...
分类:
其他好文 时间:
2020-07-01 14:17:53
阅读次数:
74