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

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:分享一篇有观点和思考的技术文章

本周看到一个Go语写的博客平台:
A simple, federated blogging platform. Written in Go.
https://writefreely.org
类似于wordpress的,但是看了视频是真simple、真极简啊。也许要不是Go语言写的,我最近刚好对Go语言有兴趣,我还真的不会看。因为现在成熟的博客平台很多,而且必须的功能也是有的,外加一些简单的投放广告的功能。
但是又让我想到一个问题,是不是所有的极简主义都是好的?也许很多东西一开始也是极简的,但是经过不断的增加功能,不断的迭代,变得臃肿不堪。感觉这种进程是在不断的重复上演的,一款软件,一开始用了几个吸引人的功能来吸引了不少的客户,但是后来经过不断的迭代,不断的增加新的功能,导致种种软件的运行速度慢,运行作占用内存大,各种的软件的Bug,客户的体验下降,然后客户开始寻找别的功能简单的软件,但是这款软件会不会再次经历这样的历程呢?也许吧。
显然对于一个互联网的产品来说,要永远的保持极简主义很难,比如淘宝刚刚开始买东西的,现在都能玩小游戏了。比如微信刚刚来时就是聊天的,现在小程序,微信群里也常常有各种小游戏的分享。貌似这些都是不可避免的。
那么我在想所谓的极简主义和臃肿有没有一个妥协呢?能不能找到这种平衡?也许这就是智慧吧,要做产品的人不断的思考了。
关于极简主义
作者解释了什么是极简主义的态度开发软件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值