2021.1.14
1.基础知识
1. python中for x in list_A:
注意 x已经是元素了,下面不要**A[x]**了!!!!
2. 注意要求返回的是[false,true]还是[“false”,“true”]
返回[false,true],
res.append(False)
3.linux使用命令指定GPU跑
CUDA_VISIBLE_DEVICES=1 python your_file.py
CUDA_VISIBLE_DEVICES=”” No GPU will be visible
2. 200.岛屿的数量
给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
输入:grid = [
[“1”,“1”,“0”,“0”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“1”,“0”,“0”],
[“0”,“0”,“0”,“1”,“1”]
]
输出:3
1.深度搜索遍历
class Solution {
public:
void bfs(vector<vector<char>>& grid,int i,int j){
if(i < 0 || j < 0 || i >= grid.size() || j >= grid[0].size())return;
if(grid[i][j] == '0')return;
grid[i][j] = '0';
bfs(grid,i+1,j);
bfs(grid,i,j+1);
bfs(grid,i-1,j);
bfs(grid,i,j-1);
}
int numIslands(vector<vector<char>>& grid) {
int ans = 0;
for(int i = 0;i < grid.size(); i++){
for(int j = 0;j < grid[0].size();j++){
if(grid[i][j] == '0')continue;
ans ++;
bfs(grid,i,j);
}
}
return ans;
}
};
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
ans = 0
def bfs(gird, i,j):
if i <0 or j<0 or i >= len(grid) or j >= len(grid[0]):
return
if grid[i][j] == '0':
return
gird[i][j] = '0'
bfs(grid, i+1,j)
bfs(grid,i,j+1)
bfs(grid,i-1,j)
bfs(grid,i,j-1)
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == '0':
continue
ans +=1
bfs(grid, i, j)
return ans
2.并查集
class UnionFind:
def __init__(self, grid):
m, n = len(grid), len(grid[0])
self.count = 0
self.parent = [-1] * (m * n)
self.rank = [0] * (m * n)
for i in range(m):
for j in range(n):
if grid[i][j] == "1":
self.parent[i * n + j] = i * n + j
self.count += 1
def find(self, i):
if self.parent[i] != i:
self.parent[i] = self.find(self.parent[i])
return self.parent[i]
def union(self, x, y):
rootx = self.find(x)
rooty = self.find(y)
if rootx != rooty:
if self.rank[rootx] < self.rank[rooty]:
rootx, rooty = rooty, rootx
self.parent[rooty] = rootx
if self.rank[rootx] == self.rank[rooty]:
self.rank[rootx] += 1
self.count -= 1
def getCount(self):
return self.count
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
nr = len(grid)
if nr == 0:
return 0
nc = len(grid[0])
uf = UnionFind(grid)
num_islands = 0
for r in range(nr):
for c in range(nc):
if grid[r][c] == "1":
grid[r][c] = "0"
for x, y in [(r - 1, c), (r + 1, c), (r, c - 1), (r, c + 1)]:
if 0 <= x < nr and 0 <= y < nc and grid[x][y] == "1":
uf.union(r * nc + c, x * nc + y)
return uf.getCount()
3. Tmux使用手册
Tmux和Screen一样但是更强大的终端复用软件,他的作用 1)可以分屏,同一个连接,可以无缝分屏,2)保护现场,远程耗时服务,可以保持会话 3)会话共享,将tmux地址分享他人,就可以通过ssh进入会话。
1.安装
Linux安装
sudo apt-get install tmux
tmux采用C/S模型构建,输入tmux命令就相当于开启了一个服务器,此时默认将新建一个会话,然后会话中默认新建一个窗口,窗口中默认新建一个面板。会话、窗口、面板之间的联系如下:
一个tmux
session
(会话)可以包含多个window
(窗口),窗口默认充满会话界面,因此这些窗口中可以运行相关性不大的任务。一个
window
又可以包含多个pane
(面板),窗口下的面板,都处于同一界面下,这些面板适合运行相关性高的任务,以便同时观察到它们的运行情况。
tmux # 新建一个无名称的会话
tmux new -s demo # 新建一个名称为demo的会话
2.常用命令
断开会话
tmux detach # 断开当前会话,会话在后台运行
使用快捷键组合Ctrl+b
+ d
,三次按键可以断开当前会话。
进入之前会话
tmux a # 默认进入第一个会话
tmux a -t demo # 进入到名称为demo的会话
关闭会话
会话的使命完成后,一定是要关闭的。我们可以使用tmux的kill命令,kill命令有kill-pane
、kill-server
、kill-session
和 kill-window
共四种,其中kill-session
的语法为tmux kill-session -t session-name
。如下:
tmux kill-session -t demo # 关闭demo会话
tmux kill-server # 关闭服务器,所有的会话都将关闭
查看所有会话
tmux list-session # 查看所有会话
tmux ls # 查看所有会话,提倡使用简写形式
如果刚好处于会话中怎么办?别担心,我们可以使用对应的tmux快捷键Ctrl+b
+ s
,此时tmux将打开一个会话列表,按上下键(⬆︎⬇︎)或者鼠标滚轮,可选中目标会话,按左右键(⬅︎➜)可收起或展开会话的窗口,选中目标会话或窗口后,按回车键即可完成切换。
4.Typora常用快捷键
- 撤销:Ctrl+Z
- 重做:Ctrl+Y
- 剪切:Ctrl+X
- 复制:Ctrl+C
- 粘贴:Ctrl+V
- 复制为MarkDown:Ctrl+Shift+C
- 粘贴为纯文本:Ctrl+Shift+V
- 全选:Ctrl+A
- 选中当前行/句:Ctrl+L
- 选中当前格式文本:Ctrl+E
- 选中当前词:Ctrl+D
- 跳转到文首:Ctrl+Home
- 跳转到所选内容:Ctrl+J
- 跳转到文末:Ctrl+End
- 查找:Ctrl+F
- 查找下一个:F3
- 查找上一个:Shift+F3
- 替换:Ctrl+H
- 标题:Ctrl+1/2/3/4/5
- 段落:Ctrl+0
- 增大标题级别:Ctrl+=
- 减少标题级别:Ctrl±
- 表格:Ctrl+T
- 代码块:Ctrl+Shift+K
- 公式块:Ctrl+Shift+M
- 引用:Ctrl+Shift+Q
- 有序列表:Ctrl+Shift+[
- 无序列表:Ctrl+Shift+]
- 增加缩进:Ctrl+]
- 减少缩进:Ctrl+[
- 加粗:Ctrl+B
- 斜体:Ctrl+I
- 下划线:Ctrl+U
- 代码:Ctrl+Shift+`
- 删除线:Alt+Shift+5
- 超链接:Ctrl+K
- 图像:Ctrl+Shift+I
- 清除样式:Ctrl+
-
- 显示隐藏侧边栏:Ctrl+Shift+L
- 大纲视图:Ctrl+Shift+1
- 文档列表视图:Ctrl+Shift+2
- 文件树视图:Ctrl+Shift+3
- 源代码模式:Ctrl+/
- 专注模式:F8
- 打字机模式:F9
- 切换全屏:F11
- 实际大小:Ctrl+Shift+0
- 放大:Ctrl+Shift+=
- 缩小:Ctrl+Shift±
- 应用内窗口切换:Ctrl+Tab
-
- 显示隐藏侧边栏:Ctrl+Shift+L
- 大纲视图:Ctrl+Shift+1
- 文档列表视图:Ctrl+Shift+2
- 文件树视图:Ctrl+Shift+3
- 源代码模式:Ctrl+/
- 专注模式:F8
- 打字机模式:F9
- 切换全屏:F11
- 实际大小:Ctrl+Shift+0
- 放大:Ctrl+Shift+=
- 缩小:Ctrl+Shift±
- 应用内窗口切换:Ctrl+Tab
- 打开DevTools:Shift+F12