写点什么

ARTS|Week 02:体会刷算法题的快乐,同时开启 Ubuntu 20.04 备用系统

用户头像
MiracleWong
关注
发布于: 2020 年 06 月 06 日
ARTS|Week 02:体会刷算法题的快乐,同时开启Ubuntu 20.04备用系统



ARTS是极客时间推出的一个打卡活动,通过100天的关于Algorithm、Review、Tip和Share的刻意训练,来实现进阶。

1. Algorithm

要求:每周至少做一个LeetCode算法题,为了编程训练和学习。

实际时间花费:120分钟,自己认真刷了一遍,看了很多解题方法

算法题目

算法题链接:Move Zeroes

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:

题目分析

本题属于“数组变换”的范畴,

第一种方法:后面加(append)0,前面删(remove)0,这种方式的时间复杂度比较高为O(n2),外部循环为O(n),内部的插入为O(1),删除群移为O(n)

第二种方法:双指针法,j快指针,指向非元素,i慢指针,指向最新一个0元素的位置,循环数组时,j当遇到非零元素则开始交换慢指针所指的0元素

代码

我是通过Python 3 来对算法进行实现。

方法1:

class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
for i in nums[:]:
if i==0:
nums.append(0)
nums.remove(0)

方法2:

class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
i = 0
for j in range(len(nums)):
if nums[j] != 0:
nums[i], nums[j] = nums[j], nums[i]
i += 1
return nums



2. Review

阅读并点评至少一篇技术文章,通过英文技术文章来学习英文。

实际时间花费:30分钟

文章链接:How to use git cherry-pick effectively - Git Better

我的点评

  1. 学到了一个新的命令 git cherry-pick <commitHash>(俗称:摘樱桃),有条件和选择的选择合并部分代码。不是之前的一股脑git merge

  2. 发现之前 @阮一峰 也发了一个 git cherry-pick 教程 - 阮一峰的网络日志

  3. 通过自行测试得知cherry-pick 只会合并当前的commit 到指定分支,之前的是不会的。这也有了后面的“转移连续的提交”

  4. 转移多个提交:git cherry-pick <HashA> <HashB>

  5. 转移连续的提交:git cherry-pick A..B (不包含A)

  6. 转移连续的提交:git cherry-pick A^..B (包含A)



3. Tip

学习至少一个技术技巧,为了总结和归纳日常工作中遇到的知识点。

实际时间花费:30分钟

技巧



# 登入FTP
lftp 用户名:密码@ftp地址:传送端口(默认21)
# 查看文件
ls
# 改变目录
cd file-dir
# 下载
get test.pdf
mget -c *.pdf #把所有的pdf文件以允许断点续传的方式下载。
mirror aaa/ #将aaa目录整个的下载下来,子目录也会自动复制。
pget -c -n 10 file.dat #以最多10个线程以允许断点续传的方式下载file.dat,
# 上传
put 文件名
mput -c 文件名
mirror -R 本地目录名
# 不进入lftp的shell,执行命令
lftp -c "命令"
lftp -c "get ftp://用户名:密码@ftp地址:传送端口:/file-dir/test.tar.gz" #举例
# 模式设置(配置文件),在 /etc/lftp.conf 中添加
set ftp:charset gbk
set file:charset utf8
set pget:default-n 5



我的学习

  1. 在Shell脚本中使用lftp替代ftp,会有更精简的代码,尤其是做备份上传文件时

  2. 适时的使用lftp -c "cmd",是一种很好的方式,避免进入lftp的shell



4. Share

分享一篇有观点和思考的技术文章,为了建立影响力、输出价值观。

实际时间:20分钟

文章链接:写给工程师的 Ubuntu 20.04 最佳配置指南



我的学习

  1. 一篇很不错的Ubuntu 20.04 系统的装机指南,由于我不是Ubuntu Desktop作为主力开发工具,所以很多的桌面的设置用不到。

  2. Zsh的配置和插件是通用的,在Mac上也可以很好的使用。

  3. 第5章节“使用问题记录”好评,不过应该在文章的最开始说明,这样在每个小章节遇到问题时,可以及时查找。

  4. deep-wine-ubuntu 和 alien ,这种需要转换思路的工具不错。

  5. 从运维的角度来讲没有提供一个可以一键执行的脚本,当然也和很多工具需要前面的工具及时的安装才可以使用有关。

参考资料

  1. git cherry-pick 教程 - 阮一峰的网络日志

  2. How to use git cherry-pick effectively - Git Better

  3. lftp命令

  4. 写给工程师的 Ubuntu 20.04 最佳配置指南



发布于: 2020 年 06 月 06 日阅读数: 54
用户头像

MiracleWong

关注

Hello World, Hello Miracle! 2017.10.24 加入

运维开发工程师!

评论

发布
暂无评论
ARTS|Week 02:体会刷算法题的快乐,同时开启Ubuntu 20.04备用系统