淫字论事不论心,论心千古无完人。孝字论心不论事,论事千古无孝子。
肉体才是人的神殿,不管里面供奉的是什么,都应该好好保持它的强韧、美丽和清洁。 ——《1Q84》村上春树
真诚感谢四步法:
说明行为:就是说清楚对方具体帮你做了什么事;
说清影响:说明他帮你的这件事,为你解决了什么问题;
分享感受:表达受到帮助后的真实感受;
投桃报李:表明对方有需要的话,你也愿意尽力帮忙。彭林教授(清华大学人文学院历史系)反对父亲节、母亲节等西方节日。因为中国人是有孝道的,一年四季没有哪一天不孝,君子有终身之孝。而西方人它是没有孝道的,所以他们要找出一天来表示一下。
LeetCode #238 除自身以外数组的乘积(Product of Array Except Self)
题目
给你一个长度为 n 的整数数组 nums
,其中 n > 1,返回输出数组 output
,其中 output[i]
等于 nums
中除 nums[i]
之外其余各元素的乘积。
示例:
输入: [1,2,3,4]
输出: [24,12,8,6]
提示: 题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。
说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。
进阶: 你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组不被视为额外空间。)
左右乘积数组
维护两个数组,分别存放nums[i]
左右乘积。
1 | class Solution { |
复杂度:
- 时间复杂度:O(N) 其中 O(N) 指的是数组
nums
的大小。预处理left
和right
数组以及最后的遍历计算都是 O(N) 的时间复杂度。 - 空间复杂度:O(N) 其中 O(N) 指的是数组
nums
的大小。使用了left
和right
数组去构造答案,left
和right
数组的长度为数组nums
的大小。
进一步优化 O(1) 的空间复杂度
可以使用答案数组来替代 left
数组,从右向左遍历,动态更新 nums[i]
右侧乘积。
也可以使用答案数组来替代 right
数组,从左向右遍历,动态更新 nums[i]
左侧乘积。
1 | class Solution { |
复杂度:
- 时间复杂度:O(N),其中 O(N) 指的是数组
nums
的大小。分析与方法一相同。 - 空间复杂度:O(1),输出数组不算进空间复杂度中,因此我们只需要常数的空间存放变量。
LeetCode #1431 拥有最多糖果的孩子(Kids With the Greatest Number of Candies)
题目
给你一个数组candies
和一个整数extraCandies
,其中candies[i]
代表第 i
个孩子拥有的糖果数目。
对每一个孩子,检查是否存在一种方案,将额外的 extraCandies
个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。
示例1:
输入: candies = [2,3,5,1,3], extraCandies = 3
输出: [true,true,true,false,true]
解释:
孩子 1 有 2 个糖果,如果他得到所有额外的糖果(3个),那么他总共有 5 个糖果,他将成为拥有最多糖果的孩子。
孩子 2 有 3 个糖果,如果他得到至少 2 个额外糖果,那么他将成为拥有最多糖果的孩子。
孩子 3 有 5 个糖果,他已经是拥有最多糖果的孩子。
孩子 4 有 1 个糖果,即使他得到所有额外的糖果,他也只有 4 个糖果,无法成为拥有糖果最多的孩子。
孩子 5 有 3 个糖果,如果他得到至少 2 个额外糖果,那么他将成为拥有最多糖果的孩子。
示例2:
输入: candies = [4,2,1,1,2], extraCandies = 1
输出: [true,false,false,false,false]
解释: 只有 1 个额外糖果,所以不管额外糖果给谁,只有孩子 1 可以成为拥有糖果最多的孩子。
示例3:
输入: candies = [12,1,12], extraCandies = 10
输出: [true,false,true]
提示:
- 2 <= candies.length <= 100
- 1 <= candies[i] <= 100
- 1 <= extraCandies <= 50
枚举
没啥好说的,儿童节快乐!
1 | class Solution { |
题目链接
https://leetcode-cn.com/problems/kids-with-the-greatest-number-of-candies/
Welcome to Anaconda
为什么要用Anaconda
Anaconda解决了官方Python的两大痛点。
- 提供了包管理功能,Windows平台安装第三方包经常失败的场景得以解决。
- 提供环境管理的功能,功能类似Virtualenv,解决了多版本Python并存、切换的问题。
下载安装conda
1 | wget https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh |
把conda加入PATH
1 | # >>> conda init >>> |
参考
LeetCode 101. 对称二叉树
摘要:
二叉树的对称性。
LeetCode 200. 岛屿数量
摘要:
洪水灌溉算法经典题。
Linux基础知识
基础命令
cd ~
进入家目录,家目录的定义为 home下的用户名目录;cd -
进入上一次目录;Ctrl + C
结束当前进程进或当前行的属于进入下一行;Ctrl + U
清空当前行输入;Tab
补全命令、文件、路径,底层是Trie前缀树实现;pwd
显示当前所在目录ls -l
显示当前目录下文件和目录详情,l表示 long list;ls -h
人性化显示当前目录下文件和目录详情,h表示 human readable;ls -a
显示当前目录下所有文件和目录,包括.开头的隐藏目录,a表示 all;cp src dst
复制并重命名路径src到dst;mv src dst
移动并重命名路径src到dst;touch
创建一个文件,后面可以加空格并列创建多个;mkdir
创建一个文件夹,后面可以加空格并列创建多个;history
显示用过的历史命令;rm
删除文件或文件夹,删除文件夹时一般加 -r参数递归删除子目录,r表示recursive;cat
查看文件;
功能性命令汇总
查找当前目录及子目录特定文件(夹)并删除
find . -name "*.zip" -type f -print -exec rm {} \;
.
即从当前目录递归查找-name '*.zip'
查找以.zip
文件名结尾的对象-type f
该对象为文件-print
屏幕输出-exec
查找之后执行rm
删除
如果希望删除目录,可以-type d
,其表示对象为目录。另外如果希望递归删除,可以rm -r
。如果希望递归强制删除,可以rm -rf
。
查找当前目录及子目录特定文件并移动到目标目录
find . -name "*.mp4" -type f -print -exec mv -t /home/AriaGo/ {} +;
Windows同一台计算机不同用户之间转移hexo运行环境
部署hexo的用户:A
新用户:B
在Windows平台由A切换B之后,A配置的hexo没法直接使用。
解决方法
- 将
C:\Users\A\AppData\Roaming
下的npm
目录拷贝到C:\Users\B\AppData\Roaming
。这里是hexo的安装目录,在新用户下不用重新安装。
- 将
C:\Users\A
下的.ssh
目录拷贝到C:\Users\B
。这里存放着用于连接Github的ssh公钥和私钥。
- 将
C:\Users\A
下的node_modules
目录拷贝到C:\Users\B
。这里是安装node之后用来存放
npm
下载的各种包的地方,我们不用重新执行npm install
,直接拷贝即可。- 将
C:\Users\B\AppData\Roaming\npm
添加到B的用户环境变量。这一步可以让我们在新用户B下直接执行
hexo
命令。- 将
T:\Git\root\Git\cmd
添加到B的用户环境变量。这样可以在B下执行
git
命令。
同一台计算机不同不同用户之间转移hexo运行环境要比不同计算机之间更加方便。
参考:
https://hexo.io/zh-cn/docs/
https://zhuanlan.zhihu.com/p/35668237
https://www.zhihu.com/question/21193762
https://m.html.cn/qa/node-js/12146.html
https://www.ruanyifeng.com/blog/2016/01/npm-install.html
谷歌云(GCP)给给未分配实例的外部IP地址分配实例
为了给未分配实例的外部IP地址分配实例,必须要保证新的实例与该IP地址在同一地区。
直接在新的实例中选择保留的IP地址。
这样当我们删除一个实例,但希望把保留的IP地址应用到新的实例时,就可以很方便地操作。
VPS测速
speedtest-cli
- 下载speedtest-cli
wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
- 添加可执行权限
chmod +x speedtest-cli
- 以默认的Mbps为单位测速
./speedtest-cli
- 以MB为单位测速
./speedtest-cli --byte
- 查看可用测速服务器
./speedtest-cli --list
- 选择指定服务器测速
./speedtest-cli --server NumberOfServer
- 获取帮助
./speedtest-cli --help
superspeed
- 下载superspeed
.wget https://raw.githubusercontent.com/oooldking/script/master/superspeed.sh
- 添加可执行权限
chmod +x superspeed.sh
- 测速
./superspeed.sh