301. Remove Invalid Parentheses

题目解析

删除不合法的括号,比如下面的样例

1
2
输入: "(a)())()"
输出: ["(a)()()", "(a())()"]

阅读全文

146. LRU Cache

题目解析

创建一个LRU(Least Recently Used cache)最近使用的缓存会留在其中,最久的会被踢出去。这道题关键在于O(1)的时间复杂度。对于LRU需要一个类似队列的结构,同时当其中一个元素被使用后(get),需要将其提到队列最后,这样就最晚被删除,寻找这个元素需要O(1),那么得使用hashmap来贮存key对应的位置,同时提到最后这个操作也需要O(1),那么就需要使用双端链表,如果用vector,删除操作需要O(n).

阅读全文

394. Decode String

题目解析

2[bc]这样格式的字符串变成bcbc,2表示中括号里字符串重复的次数。

方法

主要是字符串的操作,遇到]时再进行操作,取出[abc]里的字符串,同时使用isdigit判断数字来获得重复次数,使用stoi将字符串转换为数字,然后使用str.replace(size_t pos, size_t len, const string & str)来替换解码后的字符串,需要注意的是索引i,再字符串解码后需要变成i+1+newStr.size()

阅读全文

287. Find the Duplicate Number

题目解析

找到数组中重复的元素,难点在于不能修改原数组、空间复杂度O(1)、时间复杂度小于O(n^2)

方法

在这里一共n个元素,有n+1种元素,因为重复元素可以多于1,说明每个元素最多能有n-1个能放在对应索引上。
如果将元素的值作为索引,可以发现规律,比如:

1
2
3
4
输入: [1,3,4,2,2]
可以看成:
索引:0 1 2 3 4
值:1 3 4 2 2

阅读全文

347. Top K Frequent Elements

题目解析

从数组中找到出现频率前K多的元素

方法一 排序

使用map来获得所有元素的频率,然后排序,找到前k个元素。时间复杂度是O(nlgn) 耗时20ms

阅读全文

42. Trapping Rain Water

题目解析

给出一个数组,里面的数字表示柱状体的高度,需要求出柱状体围绕能够存多少雨水,比如下面的例子

1
2
3
输入: [0,1,0,2,1,0,1,3,2,1,2,1]
输出: 6
因为(1,0,2)能够存面积1的水,(2,1,0,1,3)能存下面积4的水,(2,1,2)能存下1的水

阅读全文

初尝试Typescript

看了Anders Hejlsberg大佬的视频-2017:What’s new in TypeScript?2018:What’s new in TypeScript?,感觉typescript好有意思,尝试一下~

阅读全文

995. Minimum Number of K Consecutive Bit Flips

题目解析

给一个包含0、1的数组,每次能反转K个元素(0->1, 1->0),输出需要翻转多少次。

1
2
3
4
5
6
输入: A = [0,0,0,1,0,1,1,0], K = 3
输出: 3
解释:
翻转 A[0],A[1],A[2]: A 变为 [1,1,1,1,0,1,1,0]
翻转 A[4],A[5],A[6]: A 变为 [1,1,1,1,1,0,0,0]
翻转 A[5],A[6],A[7]: A 变为 [1,1,1,1,1,1,1,1]

阅读全文

折腾React和Electron

安装和配置

直接使用create-react-app创建初始的react app, 然后安装electrion相关包

1
2
3
create-react-app app
yarn add electron electron-builder wait-on concurrently --dev
yarn add electron-is-dev

阅读全文

React开发中的Webpack配置

Webpack配置文件一览

Webpack中配置文件是它的关键,绝大多数配置都在 webpack.config.js中,主要结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const path = require('path');

module.exports = {
entry: './app.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'my-first-webpack.bundle.js'
},
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader'}
]
},
plugins: [
new HtmlWebpackPlugin({ template: './src/index.html'})
],
mode: 'development'
};

阅读全文