ARTS 第 1 周

用户头像
乌拉里
关注
发布于: 2020 年 06 月 07 日
ARTS 第 1 周



Algorithm

这周在刷双指针类的算法题:75. 颜色分类,最开始是采用的字典存储计数的解法,在解答中看到了双指针的解法。

计数解法:

class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
map = {}
for i in nums:
value = map.get(i, 0)
map[i] = value + 1
nums.clear()
for i in range(3):
nums.extend([i] * map.get(i, 0))
return nums

双指针解法:

class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
p0 = curr = 0
p2 = len(nums) - 1
while curr <= p2:
if nums[curr] == 0:
nums[curr], nums[p0] = nums[p0], nums[curr]
curr += 1
p0 += 1
elif nums[curr] == 2:
nums[curr], nums[p2] = nums[p2], nums[curr]
p2 -= 1
else:
curr += 1
return nums



Review

这周阅读了《Using JSON to Exchange Data》,过去一直使用 json,但其实并不知道json的工作原理,读了这篇文章才真正了解到 json是本质就是JavaScript对象,刚开始读英文文章很吃力,坚持下去,情况一定会改善的。



Tip

本周在工作中学会了java 8新特性Stream API,Steam 支持函数式编程和惰性计算,可以表示无限的序列,可以让代码更简练也更高级。

public class test {
public static void main(String[] args) {
int start = 1;
int end = 100;
// 获得 1-100 的正整数集合
List<Integer>list = Stream.iterate(start,item->item+1).limit(end).collect(Collectors.toList());
//计算前20个整数的平方之和
AtomicReference<Integer> sum = new AtomicReference<>(0);
list.stream()
.filter(n->n%2==0)
.map(n->n*n)
.limit(20)
.forEach(n-> sum.set(sum.get() + n));
System.out.println(sum);
}
}



share

分享文章《再见!杭州!再见!阿里巴巴》,从老冯的经历和最后的建议,我明白目前的自己埋头苦写代码,巩固底层知识,寻找机会跳槽到大厂。



用户头像

乌拉里

关注

还未添加个人签名 2019.06.11 加入

还未添加个人简介

评论

发布
暂无评论
ARTS 第 1 周