2021_1_14_lc

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-panekill-serverkill-sessionkill-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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值