Krains

LV0
发表了文章

外卖配送的路径规划 Krains 2021-04-09 BFS动态规划

自己有份商品购买清单,附近的商店有这些商品,外卖配送员会帮忙配齐商品并将它送到我这里,要求在商品配齐的前题下,外卖小哥走的路线最短。

Krains
发表了文章

策略模式 Krains 2020-12-12

在设计模板时审批人一般是固定的,但是也可设计成一种审批类型,比如审批人设置为申请人的leader,或者申请所属项目的维护人员,这时候我们需要根据不同的审批类型设...

Krains
发表了文章

责任链模式 Krains 2020-12-23

模式定义:使多个对象都有机会处理请求,从而避免了请求者的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。

Krains
发表了文章

字典树 Krains 2020-09-01

当然还有其他的数据结构,如哈希表,使我们能够在字符串数据集中搜索单词。为什么我们还需要 Trie 树呢?尽管哈希表可以在 O(1) 时间内寻找键值,却无法高效的...

Krains
发表了文章

410. 分割数组的最大值 Krains 2020-08-29 20:21:39 动态规划二分查找

对答案进行二分,得到mid,如果mid可以将数组切割成m组,并且每组之和小于mid,由于我们要找的是满足要求的最小值,所以可以排除区间(mid, right],...

Krains
发表了文章

96. 不同的二叉搜索树 II Krains 2020-09-03 树

但是如果按照上述递归函数的方法写,每次递归只能返回一颗树,我们需要的是多颗树,我们可以将不同的根结点装入List然后返回,实际上,上述代码可以改写成

Krains
发表了文章

CAS Krains 2020-08-25

其中的关键是 compareAndSet,它的简称就是 CAS (也有 Compare And Swap 的说法),该方法是原子的。

Krains
发表了文章

Java中的线程 Krains 2020-08-24

Java线程之间的通信由Java内存模型(简称JMM)控制,从抽象的角度来说,JMM定义了线程和主内存之间的抽象关系。

Krains
发表了文章

ReentrantLock可重入锁 Krains 2020-08-27

与 synchronized 一样,都支持可重入,但相对于 synchronized 它还具备如下特点

Krains
发表了文章

happens-before Krains 2020-08-26

happens-before 规定了对共享变量的写操作对其它线程的读操作可见,它是可见性与有序性的一套规则总结,抛 开以下 happens-before 规则,...

Krains
发表了文章

synchronized关键字 Krains 2020-08-25

synchronized实际是用对象锁保证了临界区内代码的原子性(临界区就是多个线程对共享资源读写操作的代码块),临界区内的代码对外是不可分割的,不会因线程切换...

Krains
发表了文章

volatile关键字 Krains 2020-08-26

main 线程对 run 变量的修改对于 t 线程不可见,导致了 t 线程无法停止

Krains
发表了文章

53. 最大子序和 Krains 2020-08-20 10:46:24 动态规划前缀和

看到子数组的题目,就应该想到前缀和,为了最大化子数组的和,假设我们有前缀和s,为了让子数组和最大,我们应该找出[i, j],使得s[j+1]-s[i]的差值最大...

Krains
发表了文章

134. 加油站 Krains 2020-08-20 14:03:21 前缀和贪心

当然也需要借助贪心的思想,如果总加油量和耗油量大于等于0那么总可以环绕一周,我们用diff[i]=gas[i]-cost[i]得到一个数组,我们找到是该数组的最...

Krains
发表了文章

LinkedList源码分析

底层数据结构的不同:ArrayList底层是数组实现的,LinkedList是双向链表实现的,这延伸到数组和链表的区别

Krains
发表了文章

HashMap源码分析

负载因子,当size大于threshold时进行扩容,threshold=capacity * loadFactor,capacity是当前数组长度,若当前桶大...

Krains
发表了文章

Lambda表达式

Java中一切皆对象,因此在Java中函数或者方法无法独立存在,它们不是一个对象,要想像JavaScript进行函数式编程,Java8提出Lambda表达式。

Krains
发表了文章

抽象类与接口

如果把一个方法定义为abstract,表示这是一个抽象方法,本身没有实现任何方法语句,因为这个抽象方法本身是无法执行的,所以其所在的类无法被实例化,必须要在类上...

Krains
发表了文章

ArrayList源码分析

Krains
发表了文章

128. 最长连续序列

最主要的思路是将所有数存入set集合,然后再遍历数组,如果一个数不是当前连续序列的第一个,则不计数,当它是序列中第一个数才统计其所在连续序列的长度。

Krains

个人简介

个人成就

扫码关注云+社区

领取腾讯云代金券