0%

200. 岛屿数量

给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

示例 1:

输入:grid = [
["1","1","1","1","0"],
["1","1","0","1","0"],
["1","1","0","0","0"],
["0","0","0","0","0"]
]
输出:1

示例 2:

输入:grid = [
["1","1","0","0","0"],
["1","1","0","0","0"],
["0","0","1","0","0"],
["0","0","0","1","1"]
]
输出:3

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 300
  • grid[i][j] 的值为 '0''1'
阅读全文 »

2. 两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
阅读全文 »

在整理资料的时候,突然想起来还有个将近半年未更的博客。经历了这几个月惨无人道的秋招,终于明确自己最大的缺点: 问啥啥不会。痛定思痛之后,决定开始学习并记录,顺便恢复博客的更新。(毕竟域名快到期了)

1. 两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
阅读全文 »

写在前面:

使用 Hexo 进行博客写作非常方便:

  1. hexo new post "TITLE" 新建文章
  2. hexo g 生成静态页面
  3. hexo d 部署页面

美中不足的是,一旦切换写作环境或者数据丢失,原始的文章及相关配置难以同步备份。

对于需要备份的文档等小体积文件,较为通用的做法是使用 Git 进行版本控制,并托管项目到免费开放平台,如 Github, Gitee, Gitlab 等。

懒,是第一生产力!

那么,对于博客写作来说,在提交新改动后,自动化 发布文章是更便捷的做法。

使用 Github Actions 自动化部署博客

Github Actions 介绍

Github Actions 是 Github 推出的持续集成/持续交付或部署 (CI/CD)工具。它能够与 Github 上的项目无缝结合,十分好用。

GitHub Actions enables you to create custom software development life cycle (SDLC) workflows directly in your GitHub repository.

GitHub Actions 可以让你直接在 GitHub 仓库中创建自定义的软件开发生命周期 (SDLC) 工作流程。

Github Actions 有很丰富的玩法,如:自动化构建基于项目的 Docker 镜像并发布,自动编译最新的 LEDE 固件等。

本篇仅介绍使用 Github Actions 自动发布博客文章。

阅读全文 »

写在前面

经过许多折腾,终于找到了适合自己的 Python 开发环境管理。

本文仅作记录用,不定期更新。

注:笔者所使用的平台为 Windows 10 + WSL (Ubuntu 18.04)

Python 版本管理工具 -- pyenv

Python 的版本迭代较为迅速,截止至本文发布日期 (2020-06-14),最新的版本号为:3.9.0b3

由于不同项目的需求不同,管理开发环境的 Python 版本势在必行。

pyenv 是一个优秀的 Python 解释器版本管理工具:

pyenv lets you easily switch between multiple versions of Python.

pyenv 可以让你轻松地在多个 Python 版本间来回切换。

It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.

它简单,不显眼,且遵循 UNIX 传统 -- 单一目标的工具只专注于做好该事。

安装 pyenv

# https://github.com/pyenv/pyenv#installation
# https://github.com/pyenv/pyenv-installer#installation--update--uninstallation
curl https://pyenv.run | bash
# restart shell
exec $SHELL

运行 pyenv install --list,若 pyenv 安装成功,终端会输出可安装的 Python 解释器版本。

阅读全文 »

写在前面

因为刚结束学业,加之暂时赋 daiye 在家, 萌生出想要记录一些平时写码或者玩工具的个人经验,于是就有了本文的诞生。

本文非教程向, 仅用来作为笔者的备忘录。

配置环境

注:此处笔者所用的环境是 Windows 10 + WSL (Ubuntu 18.04)

安装配置 nvm(可选)和 Node.js

nvm 安装 (可选)

Node Version Manager (nvm) 是 Node.js 版本管理工具,类似于 Pythonpyenv

# https://github.com/nvm-sh/nvm#installing-and-updating
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

node 安装

# 有安装 nvm
nvm install --lts

# 没有安装 nvm,使用包管理工具安装
# 参考:https://github.com/nodesource/distributions/blob/master/README.md#deb
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs

# 手动安装
# 参考: https://github.com/nodejs/help/wiki/Installation
export VERSION=v10.15.0
export DISTRO=linux-x64
sudo mkdir -p /usr/local/lib/nodejs
sudo tar -xJvf node-$VERSION-$DISTRO.tar.xz -C /usr/local/lib/nodejs
echo "export PATH=/usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin:$PATH" >> ~/.profile
. ~/.profile
exec $SHELL

安装 cnpm 由于 npm 的官方镜像在国内的连接性十分堪忧,所以使用淘宝的 cnpm 代替

# https://developer.aliyun.com/mirror/NPM
npm install -g cnpm --registry=https://registry.npm.taobao.org
阅读全文 »