LeetCode 回溯
递归对于算法萌新宝宝们已经很难了,回溯是递归的升级版,恐怕更是难倒不少英雄汉。这篇就总结一下 LeetCode 上常见的回溯题目,这些鬼问题单独看一个都不算难,全部做一遍之后大概就晕了。 总结 回溯问题通常包含对某一集合的递归遍历,在遍历的过程中选取元素,在回溯的过程中撤销选取。最终达到遍历所有可选
LeetCode 动态规划
总结 动态规划通过保存已经计算过的结果,优化计算所有可能性的过程。 下面几种问题都牵扯所有可能性的计算: 优化问题: 在所有可能的解决方案中,寻找用时最短/代价最少的等。 【例】爬楼的最低成本 求所有解: 需要求出所有的情况,而不是选出其中的一个。 【例】斐波那契数列 背包问题: 给定候选物品与限制
Compose 纪元下的 Android 生命周期感知
在基于 View 的 Android 开发中大部分同学都知道要处理 onStop() 等生命周期,奇怪的是在 Compose 中不仅很多人忽略了这个问题,甚至连官方都后知后觉。再加上 LiveData, StateFlow, mutableStateOf 等数据承载类层出不穷,官方文档大都只演示某一
深入 Kotlin 协程(三)封装一个协程
经过前面的学习,我们已经知道 Continuation 不是真正意义上的协程,也知道这套 API 足够灵活,可以封装出各种协程实现。遵循 Java 中 Thread 的习俗,这节开始来自己打造一个上层 API,定义出协程对应的对象 Coroutine,并实现相关操作的接口。 对于大部分人,学习协程的
深入 Kotlin 协程(二)实现简单的协程 API
<style type="text/css"> .gist-file .gist-data {max-height: 400px;max-width: width:100%;} </style> [上一节]({{< ref "深入 Kotlin 协程1.md" >}})我们已经了解的 Kotlin
JetpackCompose笔记(8) - SideEffect 与协程及状态转换
副作用是什么 SideEffect 官方翻译成「副作用」或「附带效应」。 首先应该明确的是,副作用只是除了目标效果之外,附带的效果,不见得是不好的。不要把副作用和坏作用混为一谈。大概官方翻译成「附带效应」也是这个用意吧。 在编程上副作用普遍指,一个函数修改了外部状态(比如修改全局变量或打印输出)。更
Android 中的注解处理
基本语法 注解有时候也称为「元编程」,它是对代码本身进行编码,让程序自动生成代码。这种理解有一点狭义,注解不一点要生成代码,也可能只是给其他代码或 IDE 作为参考。例如 @Deprecated 就是很好的例子。 在 java 中,定义注解语法如下: @Retention(RetentionPoli
Android 视角下的 Gradle
Groovy 语法解析 函数调用与闭包 默认情况先 Gradle 使用 Groovy 语言,可选使用 Kotlin DSL 语法。这里就以 Groovy 为例,看一个常见的代码段: android { compileSdkVersion 30 defaultConfig { app
LeetCode315 Count of Smaller Numbers After Self
题目 传送门 Given an integer array nums, return an integer array counts where counts[i] is the number of smaller elements to the right of nums[i]. 这是一个 Har
Java NIO 与 OkIO 初探
Java 原生有两套 IO API,分别是传统基于流的 IO,以及新的基于 Channel 的 NIO。除此之外,有一个第三方库 OkIO,跟着 OkHttp 与 Moshi 一起火起来了。 传统 IO 相比各位已经比较熟悉,今天就只了解一下后面两套 API。 NIO NIO 并不是一个好用的 AP