2018 12 15 ARTS(9)
什麼是 ARTS
Algorithm:每週至少做一個leetcode的演算法題;
Review:閱讀並點評至少一篇英文技術文章;
Tip/Tech:學習至少一個技術技巧;
Share:分享一篇有觀點和思考的技術文章;
Algorithm 演算法題
兩個陣列的交集
https://leetcode-cn.com/problems/intersection-of-two-arrays/description/
這個基本算是沒什麼難度的,其實LeetCode刷多了就知道了要用hash表來完成。恩看起來被虐多了還是有點用的。哈哈。
public int[] intersection (int[] nums1, int[] nums2) {
int lengthFirst = nums1.length;
int lengthSecond = nums2.length;
Set<Integer> firstSet = new HashSet<Integer>();
Set<Integer> resultSet = new HashSet<Integer>();
for (int i = 0; i < lengthFirst; i++) {
firstSet.add(nums1[ i]);
}
for (int i = 0; i < lengthSecond; i++) {
if (firstSet.contains(nums2[i])) {
resultSet.add(nums2[i]);
}
}
int[] resultArray = new int[resultSet.size()];
Iterator<Integer> iterable = resultSet.iterator();
int index = 0;
while(iterable. hasNext()) {
resultArray[index] = iterable.next();
index++;
}
return resultArray;
}
有趣的電影
https://leetcode-cn.com/problems/not-boring-movies/description/
這個基本算是SQL的基本功了。
select * from cinema cc
where cc.id % 2 = 1
and cc.description != 'boring'
order by cc.rating desc
換座位
https://leetcode-cn.com/problems/exchange-seats/
跟具題意可以知道主要是集中的情況,單數、雙數、最後一個數是單數的情況。把這三個進行的union就好,我做這道題的時候,第一次沒考慮到最後是單數的情況。
select s.id, s.student
from (
select id - 1 as id, student from seat where mod(id, 2) = 0
union
select id + 1 as id, student from seat where mod(id, 2) = 1 && id != (select count(*) from seat)
union
select id, student from seat where mod(id,2)=1 && id=(select count(*) from seat)
) s
order by s.id asc
組合總和 III
https://leetcode-cn.com/problems/combination-sum-iii/description/
234. 迴文連結串列
https://leetcode-cn.com/problems/palindrome-linked-list/
這道題就是上上個禮拜就做過了,但是最近在回顧演算法專欄的時候就重讀了一遍關於連結串列的兩篇文章,都完了就發現了原來這道題被提示過了,利用快慢座標來做這道題就是最優解了。
Review 閱讀並點評至少一篇英文技術文
Tracing a packet journey using Linux tracepoints, perf and eBPF
這是一篇跟蹤在Linux下的資料包的文章,文章很長,看了一遍還沒來得及實踐的,需要用到工具:perf and eBPF,以及對C語言有一定的瞭解。
Tip/Tech:學習至少一個技術技巧
(未完待續)
Share:分享一篇有觀點和思考的技術文章
(未完待續)