hero image

Riicarus' Coding Space

To be a full stacker

Compiler
A Java based flexible compiler
Comandante
A Java based command line tool
SaggioTask
A powerful util for complex tasks arrangement based on Java.
语言

语言

词法


Riicarus大约 3 分钟ProjectCompilerCompilerLangrage
星辰工作室后端学习路线

星辰工作室后端学习路线

语言基础

  1. 语法
  2. 库实现--自己看源码
  3. 底层原理

Java

  1. Head First Java
  2. Java 核心技术
  3. Effective Java
  4. Java 并发编程的艺术
  5. 深入理解 JVM 虚拟机

Golang

  1. Go 语言设计与实现

算法

  1. 代码随想录
  2. LeetCode

Riicarus小于 1 分钟StarStudioBackEndTrainingLearningPath
Effective Java

Effective Java

本文中, 英文部分均来自于原文摘抄, 如果想要更好的理解和阅读体验, 请不要忽略英文引用!

Effective Java 这本书作为 Java 编程思想和范式的"集大成者", 需要很深的 Java 编程功底. 我在阅读时也感受到很多没有了解过的东西, 尤其是读英文原著, 感觉一些部分的理解尚且非常浅薄, 尤以 Stream API 的部分为甚.

现在只是第一遍阅读这本书的原版, 只在博客中做粗略的记录和思考. 在读完第一遍之后, 会再次进行巩固和更新.


Riicarus大约 152 分钟JavaSpecificationJavaSpecificationEffective Java
区间分组

区间分组

例题

区间分组-acwing

区间分组-acwing

分析

对于区间问题, 我们还是首先将其按照某一侧端点排序, 这里我们选择左端点.

我们记录每个已选择区间分组的最大右端点 maxR 的值, 从左到右遍历排序后的区间 range.


Riicarus大约 1 分钟算法算法模板贪心区间问题
最大不相交区间数量

最大不相交区间数量

例题

最大不相交区间数量-acwing

最大不相交区间数量-acwing

分析

同样的, 我们先将所有区间按照右端点大小从小到大排序. 从右端点最小的区间开始选取, 如果下一个区间包含了当前选取区间的右端点, 就跳过; 如果不包含, 就选取.


Riicarus大约 1 分钟算法算法模板贪心区间问题
区间选点

区间选点

例题

区间选点-acwing

区间选点-acwing

区间问题常见解法

对于此类区间问题, 可以将区间根据左/右端点排序, 然后遍历讨论.

本题中, 我们要选择尽量少的点, 就要让我们选的点尽量覆盖多个区间. 对区间根据右端点排序后, 从最左侧的区间开始, 如果我们期望选点尽量覆盖多的区间, 就应该选择当前区间最右侧的点.


Riicarus大约 1 分钟算法算法模板贪心区间问题
石子合并

石子合并

石子合并是区间 DP 的经典问题.

例题

石子合并-acwing

石子合并-acwing

状态分析

区间 DP 状态通常使用 f(i, j) 来代表从 ij 的一段区间的状态集合.


Riicarus大约 1 分钟算法算法模板DP区间问题
2
3
4
5