ARTS挑战第十六周

Algorithm

【回溯法】剑指 Offer 34. 二叉树中和为某一值的路径

选择列表:对于当前节点来说,选择左右两个节点是其选择列表
路径:根节点一定在路径中,因此需要事先加入trace中;
结束条件:当前节点是叶子节点

【后序遍历】 124. 二叉树中的最大路径和

helper 函数返回以root为终点的单边最大路径和:

|-- 先计算分别以左右子节点为终点的最大路径和分别为left,right

|-- helper 函数根据left、right的正负以及大小,返回最大单边路径和

|-- 顺便记录以root为根节点的带拐(人字形)最大路径和(全局变量)

【后序+先序】297. 二叉树的序列化与反序列化

序列化【后序遍历】+ 反序列化【前序遍历】
需要注意的是,序列化对于nullptr的节点使用特殊字符占位。
反序列化则使用全局指针,从左向右逐个遍历。

【DFS】341. 扁平化嵌套列表迭代器

dfs 方法遍历嵌套列表,函数输入不同于一般的树遍历(根节点),而是一个列表

|–对于列表中的所有元素

​ |–当遍历到叶子节点时,将叶子节点加入结果集

​ |-- 否则当前元素还是一个列表,则需要递归处理这个列表

对于hasnext 方法,判断 当前迭代器是否是end()即可

对于next 方法,则返回当前迭代器的值并位移一位

【翻转链表】25. K 个一组翻转链表

25. K 个一组翻转链表 递归过程,函数返回的是反转后的head节点,处理完前k个元素后,对于后面n-k个元素的处理,只是链表长度变化了,处理逻辑完全一样,只需要将前k个元素的最后一个元素指向 后面n-k个元素反转后的头节点

​ 函数出口:当前链表长度小于k,则不用处理,直接返回头节点。边界条件,当前节点为空。

​ 函数逻辑:

​ |–如果当前节点为空,则返回

​ |–找出第k+1个节点,如果找不到则说明长度不够,则直接返回

​ |–反转从head到第k个节点的链表(prev初始为null)

​ |–将head->next = reverseKGroup(第K+1个节点,k)

​ |–返回head

Review

常见限流算法

image-20210724234405062

python time.time vs time.clock

在unix-based os上,time.time 是wall clock 时间,time.clock是cpu时间(在当前进程上花的cpu时间)

>>> import time
>>> print(time.time(), time.clock())
1359147652.31 0.021184
>>> time.sleep(1)
>>> print(time.time(), time.clock())
1359147653.31 0.02168

在windows os 上,time.time 和 time.clock 都是wall clock时间

>>> import time
>>> print(time.time(), time.clock())
1359147763.02 4.95873078841e-06
>>> time.sleep(1)
>>> print(time.time(), time.clock())
1359147764.04 1.01088769662

Tips

  1. git reset 命令 取消所有的commit之前的 git add操作,git reset <file_name>取消指定文件的add
  2. git checkout file 命令则是使用暂存区中的文件覆盖
  3. git pull 免密钥,https模式中,提前在.git-credentials文件中配置密钥时,密码不能包含@字符,否则识别不出来

Share

  1. git clone push 免密钥两种方式
  2. jupyter lab 插件安装
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值