这周的打卡内容主要是一道数组操作相关的题目,数据库方面是一道 JOIN
和 IN
关键字相关的题目,以及 Review 两篇 RxJava 中 Observable 对象过滤及组合相关的文章。
Algorithm
题目描述
Java
public int maxIncreaseKeepingSkyline(int[][] grid) { |
Python
def maxIncreaseKeepingSkyline(self, grid: List[List[int]]) -> int: |
Runtime | Memory | Language |
---|---|---|
68 ms | 13.4 MB | python |
1 ms | 41.7 MB | java |
Database
596. Classes More Than 5 Students
The
Employee
table holds all employees. Every employee has an Id, a salary, and there is also a column for the department Id.The
Department
table holds all departments of the company.Write a SQL query to find employees who have the highest salary in each of the departments. For the above tables, your SQL query should return the following rows (order of rows does not matter)
SELECT |
主要用到了NOT IN
关键字。
Review
本周接着看了RxJava系列的文章中的第三及第四篇。主要讲述了 Observable
的过滤和组合。
Observable
过滤
- Debounce:
debounce()
方法会在设置时间内没有传递数据或事件的情况下才会传递此时间之前的最后一个数据或者事件; - Distinct():过滤重复数据或者时间,需要重写时间或者数据的
equals
方法; - ElementAt:仅传递传递序列中的第 N 个数据或者元素;
- Filter: 对原始传递的元素进行过滤,仅传递满足条件的元素;
- IgnoreElements:忽略所有元素的传递,但是会在传递完成后会进行通知,如果不关心所传递的元素,仅仅在传递完成后进行通知,则可以使用此方法;
- Sample:对传递元素每隔一定阶段再传递一次;
- Skip:跳过开始的 N 个元素;
- skipLast:跳过结尾的 N 个元素;
- Take:仅传递开始的 N 个元素;
- TakeLast:仅传递最后的 N 个元素;
Obserable
组合
- CombineLatest:当某元素被两个 Observable 对象分别之一发送时,可是把两个Observable 对象进行组合,并传递经过处理之后的元素;
- Join:当两个元素有重合时,把所传递的元素两个元素当成一对病经过处理再进行传递;
- Merge:将多个 Observable 对象合并为一个,合并之后传递数据时同步传输,并非等待前面的 Observable 传递完成后后面的才开始传递;
- Concat:把两个或者多个 Observable 对象合并为一个,而非插入,合并之后的 Observable 数据传递时顺序传递的,即第一个 Observable 传递完毕之后才会传递第二个 Observable 对象的数据(区别于 Merge);
- Zip:将多个 Observable 对象的传递的元素通过一定的方法进行处理,并只传递处理之后的结果;
- SwitchOnNext:在第二个 Observable 开始传递之前第一个 Observable 一直会传递数据,当第二个 Observable 开始传递数据时,取消第一个 Observable 对象的订阅,并切换到订阅第二个 Observable 对象;
Exploring RxJava in Android — Operators for Filtering Observables
Tips
-
python list 初始化:
[-1] * N
-
adb 命令获取log的时候有时候会卡着不动,这时候可以获取试试,如果还不行的话使用Android Studio自带的Device Exploer打开log所在的文件夹,分批次取出log,猜测是log文件太大导致;
-
ime命令可以统计cpu实际运行了多长时间,命令返回三个值,real time也就是wall clock time,第二个是user time,cpu运行你的程序,在用户态运行的时间,第三个个sys time,是cpu运行程序时内核里运行指令的时间,实际程序运行时间为user time+sys time;
-
print(**f**”xxx {var} yyy”)
格式化输出字符串,format方法可以得到同样的结果:name = ‘cuz’
str_var = ‘His name is {}’
str_var.format(name)
# Output: His name is cuz -
python中的有序字典:
collections.OrderedDict
-
Linux 中目录切换:pushd、popd
-
参数解包:
from sys import argv
a, b, c = argv # 参数解包
Share
Android OOM案例分析:https://tech.meituan.com/2017/04/14/oom-analysis.html