首页
学习
活动
专区
工具
TVP
发布

Krains

专栏作者
44
文章
14839
阅读量
12
订阅数
外卖配送的路径规划 Krains 2021-04-09 BFS动态规划
自己有份商品购买清单,附近的商店有这些商品,外卖配送员会帮忙配齐商品并将它送到我这里,要求在商品配齐的前题下,外卖小哥走的路线最短。
Krains
2021-04-14
1.2K0
策略模式 Krains 2020-12-12
在设计模板时审批人一般是固定的,但是也可设计成一种审批类型,比如审批人设置为申请人的leader,或者申请所属项目的维护人员,这时候我们需要根据不同的审批类型设置不同的审批人。
Krains
2021-04-02
2310
责任链模式 Krains 2020-12-23
模式定义:使多个对象都有机会处理请求,从而避免了请求者的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。
Krains
2021-04-02
1590
字典树 Krains 2020-09-01
当然还有其他的数据结构,如哈希表,使我们能够在字符串数据集中搜索单词。为什么我们还需要 Trie 树呢?尽管哈希表可以在 O(1) 时间内寻找键值,却无法高效的完成以下操作: 找到具有同一前缀的全部键值。
Krains
2020-09-10
3690
410. 分割数组的最大值 Krains 2020-08-29 20:21:39 动态规划二分查找
对答案进行二分,得到mid,如果mid可以将数组切割成m组,并且每组之和小于mid,由于我们要找的是满足要求的最小值,所以可以排除区间(mid, right],去[left, mid]找,如果不满足,那么区间[left, mid]中任一数必然也不满足条件,应到[mid+1, right]找。
Krains
2020-09-10
3650
96. 不同的二叉搜索树 II Krains 2020-09-03 树
但是如果按照上述递归函数的方法写,每次递归只能返回一颗树,我们需要的是多颗树,我们可以将不同的根结点装入List然后返回,实际上,上述代码可以改写成
Krains
2020-09-10
2770
CAS Krains 2020-08-25
其中的关键是 compareAndSet,它的简称就是 CAS (也有 Compare And Swap 的说法),该方法是原子的。
Krains
2020-09-10
3080
Java中的线程 Krains 2020-08-24
Java线程之间的通信由Java内存模型(简称JMM)控制,从抽象的角度来说,JMM定义了线程和主内存之间的抽象关系。
Krains
2020-09-10
2510
ReentrantLock可重入锁 Krains 2020-08-27
与 synchronized 一样,都支持可重入,但相对于 synchronized 它还具备如下特点
Krains
2020-09-10
4910
happens-before Krains 2020-08-26
happens-before 规定了对共享变量的写操作对其它线程的读操作可见,它是可见性与有序性的一套规则总结,抛 开以下 happens-before 规则,JMM 并不能保证一个线程对共享变量的写,对于其它线程对该共享变量的读可见
Krains
2020-09-10
3160
synchronized关键字 Krains 2020-08-25
synchronized实际是用对象锁保证了临界区内代码的原子性(临界区就是多个线程对共享资源读写操作的代码块),临界区内的代码对外是不可分割的,不会因线程切换所打断。
Krains
2020-09-10
2950
volatile关键字 Krains 2020-08-26
main 线程对 run 变量的修改对于 t 线程不可见,导致了 t 线程无法停止
Krains
2020-09-10
3430
53. 最大子序和 Krains 2020-08-20 10:46:24 动态规划前缀和
看到子数组的题目,就应该想到前缀和,为了最大化子数组的和,假设我们有前缀和s,为了让子数组和最大,我们应该找出[i, j],使得s[j+1]-s[i]的差值最大:
Krains
2020-08-22
2880
134. 加油站 Krains 2020-08-20 14:03:21 前缀和贪心
当然也需要借助贪心的思想,如果总加油量和耗油量大于等于0那么总可以环绕一周,我们用diff[i]=gas[i]-cost[i]得到一个数组,我们找到是该数组的最大子数组和的开始元素索引k,从k出发总能环绕一周。
Krains
2020-08-22
2200
LinkedList源码分析
底层数据结构的不同:ArrayList底层是数组实现的,LinkedList是双向链表实现的,这延伸到数组和链表的区别
Krains
2020-08-19
2780
HashMap源码分析
负载因子,当size大于threshold时进行扩容,threshold=capacity * loadFactor,capacity是当前数组长度,若当前桶大小为16,16*0.75=12,那么当哈希表中的存储的键值对数达到扩容阈值12时扩容,扩容为原来的2倍
Krains
2020-08-19
2630
Lambda表达式
Java中一切皆对象,因此在Java中函数或者方法无法独立存在,它们不是一个对象,要想像JavaScript进行函数式编程,Java8提出Lambda表达式。
Krains
2020-08-19
3620
抽象类与接口
如果把一个方法定义为abstract,表示这是一个抽象方法,本身没有实现任何方法语句,因为这个抽象方法本身是无法执行的,所以其所在的类无法被实例化,必须要在类上也声明为abstract。
Krains
2020-08-19
4250
ArrayList源码分析
源码中的重要属性 DEFAULT_CAPACITY:默认初始数组大小,默认值是10,无参构造器初始化是空数组,在第一次add()操作后扩容成10 elementData:真正存放数据的数组 size:当前数组中真正存放的元素个数 构造器 提供了三种构造器,分别是无参、指定大小、指定初始数据的构造器 // 无参构造器,初始化为一个空数组,在第一次add操作时将数组扩容为默认初始数组大小10 public ArrayList() { this.elementData = DEFAULT
Krains
2020-08-19
1680
128. 最长连续序列
最主要的思路是将所有数存入set集合,然后再遍历数组,如果一个数不是当前连续序列的第一个,则不计数,当它是序列中第一个数才统计其所在连续序列的长度。
Krains
2020-08-19
3050
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档