稀有猿诉

十年磨一剑,历炼出锋芒,说话千百句,不如码二行。

TopK问题,堆和快速选择

TopK问题是很常见的一种问题,它的描述是从一个数据集或者序列中取出前k大(或者前k小),或者说找出第k大(第k小)。最为典型的就是 题215. 数组中的第K个最大元素。解决TopK需要的是最基础的数据结构和算法,不但可以考查编码基本功,更能考查思维能力。

DFS in Depth

前面一篇文章讲解了DFS的基本概念和基础的使用方法,但不够深入,DFS的应用是很广泛的,不论是枚举状态或者路径,还是递归,其本质上都是DFS。今天就来好好的理解一下DFS的内在本质,并学会在树,在图以及在回溯中的应用。

悼念耗子叔

惊闻耗子叔突然辞世,悲伤不已。仍活跃在一线的技术大神,前几天仍在社交网络上活跃的大牛,突然就这么走了,犹如一首高亢激昂的交响乐曲,嘎然而止,亦如波涛奔涌的大江,瞬间冰封,不免让人心痛,亦会唏嘘感慨生命的短暂。

Android Scoped Storage Puzzles

安卓对于文件存储这块,其实是相当混乱的,在早期的版本中对存储甚至是没有所谓的管理的,有多种方法可以操作文件存储,比如通过Java原生的方式(File/InputStream/OutputStream),以及通过ContentProvider的方式(openFile/openOutputStream)。文件的路径也是相当混乱的,有公共存储区域,App的沙盒,外部存储中的App沙盒,但其实整个文件系统中的文件都是可读的,除了系统目录,其他应用的沙盒(内部和外部)以外也都是可写的。这就造成了,安卓的文件系统特别的混乱,加之应用使用不规范,对存储造成极大的滥用,外部存储空间产生大量的垃圾文件,应用卸载后仍然存在,这也催生了一系列的清理软件。

Understanding Kotlin Scope Functions

Kotlin是基于JVM衍生出来的新一代通用编程语言,它的目标是简洁,可读和高效,这里的高效并不是代码的运行效率高,而是说项目的开发效率高。Kotlin有太多的小巧的新特性(在Java眼中就是语法糖),比如在Kotlin中有几个作用和用法都非常接近的函数apply/with/run/let/also,它们的正统名字是作用域函数(Scope functions),今天就来学习一下这些函数的使用方法和具体区别。

String Problems Archive

字符串即由字符组成的线性数组结构,可以理解为字符数组或者字符列表,但元素的集合是有限集合,通常是英文字符,数字和算术运算符号。可以说数组和列表的常见问题和技巧都可以应用于字符串,但因为是有限集合,所以又有一些独特的问题和技巧,今天就来总结一下。

基础利器之Stack和Queue

在基础的数据结构中栈和队列使用极其广泛,其用法也很多,今天就来总结一下栈和队列的使用方法和相关的题目。

Table Tennis Road Map

乒乓球可以锻炼反应能力,运动量适中,场地要求不高,能放下球台就能玩,人数要求也不高,二个人就能玩,所以非常适合中老年人,打了一段时间感觉良好,但乱打还是不行的,需要好好入门,然后再慢慢提高。

Introduction to Android Jetpack

Android Jetpack是一个由谷歌官方提供的安卓开发套件(套件是一组组件的意思),目的是帮助安卓开发者解决兼容性问题,减少重复代码,提升体验和性能,最重要的是提升开发效率。安卓以碎片化著名,不同的版本,不同的OEM厂商导致整个安卓设备碎片化严重,对App生态来说是很不友好,加之安卓本身的原因导致像流畅度,体验和性能始终逊水果不止一筹。后来谷歌推出一系列的Android SDK之外的一系列开发组件如support library来解决兼容性(App compat)和新的开发组件(RecyclerView, CardView, Pager等),后来这些东西就演变成了现在的Android Jetpack。