描述

题目描述 - https://leetcode.com/problems/divide-array-in-sets-of-k-consecutive-numbers
给定一个数组 nums 和整数 k,判断是否将数组 nums 分成有 k 个连续数字组成的若干子数组。

Example 1:

1
2
3
Input: nums = [1,2,3,3,4,4,5,6], k = 4
Output: true
Explanation: Array can be divided into [1,2,3,4] and [3,4,5,6].

Example 2:

1
2
3
Input: nums = [1,2,3,4], k = 3
Output: false
Explanation: Each array should be divided in subarrays of size 3.
Read more »

描述

在给定的 2D 平面 board 中搜索单词 word,可以在垂直相邻和水平相邻方向进行深度搜索,如果找到返回 True,否则返回 False。

1
2
3
4
5
6
7
8
9
10
board =
[
['A','B','C','E'],
['S','F','C','S'],
['A','D','E','E']
]

Given word = "ABCCED", return true.
Given word = "SEE", return true.
Given word = "ABCB", return false.
Read more »

二分法

今天重新审视了二分法,结合同事的思考认为,

二分的本质是,在一段或多段单调序列里找分界点

使用左开右闭 [l, r) 的模板如下:

1
2
3
4
5
6
7
8
9
def binary_search(l, r):
while l < r:
m = l + (r - l) // 2
if f(m): return m # optional
if g(m):
r = m # new range [l, m)
else:
l = m + 1 # new range [m+1, r)
return l # or not found

m 如果满足查找条件,即 f(m) 返回 true,则查找结束。如果 f(m) 返回 false, 则根据 g(m) 的结果构造新的查找区间。如果新区间在左边,则新的左闭右开区间是 [l, m) 等价于 [l, m-1];如果新区间在右边,则新的左闭右开是 [m+1, r)

Read more »

题目要求

类型 1: 给定两个字符串 s 和 t,找满足某种变化规律的字串/最大字串/最大字串长度等。

类型 2:给定字符串 s,查找满足某种条件的最大/最小窗口。

Read more »

一个健全的、可互操作的 JavaScript Promise 标准 —— 由开发者而定,为开发者而生。

promise代表异步操作的最终结果。Promise 开放的最原始接口是 then 方法,由该方法注册的回调函数来接受 Promise 成功状态(fulfilled)下返回的值或失败状态(rejected)下返回的错误信息。

本规范详细定义了 then 方法的行为,提供了 Promise 可互操作的基础,所有 Promises/A+ 兼容的 Promise 实现都可以参考该规范。因此,该规范是非常稳定的。 尽管 Promises/A+ 组织有时会为了向后兼容而对此规范做小的改动,但只有经过深思熟虑,充分讨论和测试之后,我们才会集成有较大改动的或向后兼容的版本更改。

Read more »

零、背景

前段时间博主曾经写过一篇文章《Windows 10 配合 Ubuntu 搭建舒适开发环境不完全指北》,文章介绍了如何使用 Windows 配合 Ubuntu 搭建舒适的开发环境,此后博主由于一些个人因素离开了上家公司,加入了目前的公司。不巧的是,新公司默认情况下配置的电脑也是 Windows(后来听说入职之前可以向 HR 申请 MBP,但我没有申请),而且电脑一旦配发,如无损坏需用满三年才能更换,而我特别不喜欢使用 Windows 的 Terminal 工具。一方面是开发环境部署困难,比如安装 Python 你可能需要自行下载 Python 安装镜像然后手动安装,安装完成后可能还需要配置环境变量,几乎所有的开发工具在 Windows 下的安装都是类似的;另一方面是 Terminal 界面丑陋,用户体验较差。即使有 Git Bash,Cmder,PowerShell,choco 等一系列辅助工具,还是无法赢得很多喜欢命令行工具的程序员的青睐, 我也一样。

Read more »
0%