Skip to content

Commit

Permalink
合并
Browse files Browse the repository at this point in the history
  • Loading branch information
luzhipeng committed Nov 2, 2019
2 parents e6ae6c7 + ad0fadf commit f786039
Show file tree
Hide file tree
Showing 32 changed files with 1,432 additions and 78 deletions.
14 changes: 9 additions & 5 deletions README.en.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# LeetCode

[![Travis](https://img.shields.io/badge/language-C++-green.svg)]()
[![Travis](https://img.shields.io/badge/language-JavaScript-yellow.svg)]()
[![Travis](https://img.shields.io/badge/language-Python-red.svg)]()
[![Travis](https://img.shields.io/badge/language-Java-blue.svg)]()
![Total visitor](https://visitor-count-badge.herokuapp.com/total.svg?repo_id=azl397985856.leetcode)
![Visitors in today](https://visitor-count-badge.herokuapp.com/today.svg?repo_id=azl397985856.leetcode)
> since 2019-09-03 19:40
Expand All @@ -13,7 +16,7 @@
This essay records the course of and my emotion to this project from initialisation to 10,000 stars.
[Milestone for 10,000+ stars](./thanksGiving.md)

If you are interested in this project, do not mean your star. This project will be supported for a long enough time by the comminity. Thanks for every audience and contributor.
If you are interested in this project, **do not mean your star**. This project will be **supported for a long enough time** by the comminity. Thanks for every audience and contributor.

## Introduction

Expand Down Expand Up @@ -107,7 +110,7 @@ The data structures mainly includes:

### Solutions to LeetCode Classic Problems

> Here only lists some representative problems but not all.
> Here only lists some **representative problems** but not all.
#### Easy

Expand Down Expand Up @@ -158,7 +161,7 @@ The data structures mainly includes:
- [0046.permutations](./problems/46.permutations.md)
- [0047.permutations-ii](./problems/47.permutations-ii.md)
- [0048.rotate-image](./problems/48.rotate-image.md)
- [0049.group-anagrams](./problems/49.group-anagrams.md)
- [0049.group-anagrams](./problems/49.group-anagrams.md)
- [0055.jump-game](./problems/55.jump-game.md)
- [0056.merge-intervals](./problems/56.merge-intervals.md)
- [0062.unique-paths](./problems/62.unique-paths.md )
Expand All @@ -183,7 +186,7 @@ The data structures mainly includes:
- [0150.evaluate-reverse-polish-notation](./problems/150.evaluate-reverse-polish-notation.md)
- [0152.maximum-product-subarray](./problems/152.maximum-product-subarray.md)
- [0199.binary-tree-right-side-view](./problems/199.binary-tree-right-side-view.md)
- [0200.number-of-islands](./problems/200.number-of-islands.md) 🆕
- [0200.number-of-islands](./problems/200.number-of-islands.md) 🆕
- [0201.bitwise-and-of-numbers-range](./problems/201.bitwise-and-of-numbers-range.md)
- [0208.implement-trie-prefix-tree](./problems/208.implement-trie-prefix-tree.md)
- [0209.minimum-size-subarray-sum](./problems/209.minimum-size-subarray-sum.md)
Expand Down Expand Up @@ -214,6 +217,7 @@ The data structures mainly includes:
- [0877.stone-game](./problems/877.stone-game.md)
- [0887.super-egg-drop](./problems/887.super-egg-drop.md)
- [0900.rle-iterator](./problems/900.rle-iterator.md)
- [0912.sort-an-array](./problems/912.sort-an-array.md) 🆕
- [1031.maximum-sum-of-two-non-overlapping-subarrays](./problems/1031.maximum-sum-of-two-non-overlapping-subarrays.md)
- [1218.longest-arithmetic-subsequence-of-given-difference.md](./problems/1218.longest-arithmetic-subsequence-of-given-difference.md) 🆕

Expand Down
35 changes: 16 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# LeetCode

[![Travis](https://img.shields.io/badge/language-C++-green.svg)]()
[![Travis](https://img.shields.io/badge/language-JavaScript-yellow.svg)]()
[![Travis](https://img.shields.io/badge/language-Python-red.svg)]()
[![Travis](https://img.shields.io/badge/language-Java-blue.svg)]()
![历史共访问次数](https://visitor-count-badge.herokuapp.com/total.svg?repo_id=azl397985856.leetcode)
![今天被访问次数](https://visitor-count-badge.herokuapp.com/today.svg?repo_id=azl397985856.leetcode)

Expand All @@ -12,13 +16,13 @@
![leetcode.jpeg](./assets/leetcode.jpeg)

这个是我写的[纪念项目 Star 突破 1W 的一个短文](./thanksGiving.md), 记录了项目的"兴起"之路, 大家有兴趣可以看一下,
如果对这个项目感兴趣,请点击一下Star, 项目会长久更新,感谢大家的支持。
如果对这个项目感兴趣,**点击一下Star**, 项目会**持续更新**,感谢大家的支持。

## 介绍

leetcode 题解,记录自己的 leetcode 解题之路。

本仓库目前分为五个部分
本仓库目前分为**五个**部分

- 第一个部分是 leetcode 经典题目的解析,包括思路,关键点和具体的代码实现。

Expand All @@ -34,18 +38,12 @@ leetcode 题解,记录自己的 leetcode 解题之路。
## 关于我

我是一个对技术充满兴趣的程序员, 擅长前端工程化,前端性能优化,前端标准化等
擅长前端工程化,前端性能优化,前端标准化等,做过.net, 搞过Java,现在是一名前端工程师,我的个人博客:https://lucifer.ren/blog/

做过.net, 搞过Java,现在是一名前端工程师。
我经常会在开源社区进行一些输出和分享,比较受欢迎的有[宇宙最强的前端面试指南](https://github.com/azl397985856/fe-interview)
[我的第一本小书](https://github.com/azl397985856/automate-everything)。目前本人正在写一本关于《leetcode题解》的实体书,因此可能更新会比较慢,如果有人想要做些贡献或者合作的也可以直接用下面的邮箱联系我。

除了我的本职工作外,我会在开源社区进行一些输出和分享,比较受欢迎的有[宇宙最强的前端面试指南](https://github.com/azl397985856/fe-interview)
[我的第一本小书](https://github.com/azl397985856/automate-everything)

目前本人正在写一本关于《leetcode题解》的实体书,因此可能更新会比较慢,
如果有人想要做些贡献或者合作的也可以直接用下面的邮箱联系我。

另外如果大家需要内推的可以找我,我这里有包括阿里,腾讯,头条,网易等很多公司的朋友。
有需要可以直接群里联系我,或者发送到我的个人邮箱 [[email protected]]
另外如果大家需要内推的可以找我,我这里有包括阿里,腾讯,头条,网易等很多公司的朋友。有需要可以直接群里联系我,或者发送到我的个人邮箱 [[email protected]]

## 食用指南

Expand Down Expand Up @@ -120,7 +118,7 @@ leetcode 题解,记录自己的 leetcode 解题之路。

### leetcode 经典题目的解析

> 这里仅列举具有代表性题目,并不是全部题目
> 这里仅列举具有**代表性题目**,并不是全部题目
#### 简单难度

Expand Down Expand Up @@ -227,8 +225,10 @@ leetcode 题解,记录自己的 leetcode 解题之路。
- [0877.stone-game](./problems/877.stone-game.md)
- [0887.super-egg-drop](./problems/887.super-egg-drop.md)
- [0900.rle-iterator](./problems/900.rle-iterator.md)
- [0912.sort-an-array](./problems/912.sort-an-array.md) 🆕
- [1031.maximum-sum-of-two-non-overlapping-subarrays](./problems/1031.maximum-sum-of-two-non-overlapping-subarrays.md)
- [1218.longest-arithmetic-subsequence-of-given-difference.md](./problems/1218.longest-arithmetic-subsequence-of-given-difference.md) 🆕

#### 困难难度

- [0004.median-of-two-sorted-array](./problems/4.median-of-two-sorted-array.md) 🆕
Expand Down Expand Up @@ -300,16 +300,13 @@ anki - 文件 - 导入 - 下拉格式选择“打包的 anki集合”,然后

## 关注我

最近我重新整理了下自己的公众号,并且我还给他换了一个名字`脑洞前端`,它是一个帮助你打开大前端新世界大门的钥匙🔑,在这里你可以听到新奇的观点,看到一些技术尝新,还会收到系统性总结和思考。

由于微信`一个自然人只能有一个订阅号`的限制, 现在我也会放一些leetcode题解在这个号上面,
后期考虑出一个leetcode模块或者想办法开另外一个公众号。
我重新整理了下自己的公众号,并且我还给它换了一个名字`脑洞前端`,它是一个帮助你打开大前端新世界大门的钥匙 🔑,在这里你可以听到新奇的观点,看到一些技术尝新,还会收到系统性总结和思考。

在这里我会尽量通过图的形式来阐述一些概念和逻辑,帮助大家快速理解,图解是我的目标。

之后我的文章同步到微信公众号 `脑洞前端`您可以关注获取最新的文章,或者和我进行交流
之后我的文章会同步到微信公众号 `脑洞前端`你可以关注获取最新的文章,并和我进行交流

另外你可以回复leetcode拉你进微信群,如果想加入qq群,请回复qq
另外你可以回复大前端进大前端微信交流群, 回复 leetcode 拉你进 leetcode 微信群,如果想加入 qq 群,请回复 qq


<img width="300" src="./assets/gongzhonghao.jpeg">
Expand Down
1 change: 1 addition & 0 deletions assets/drawio/912.sort-an-array.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<mxfile modified="2019-09-14T09:21:59.588Z" host="www.draw.io" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" etag="pFvn7xNMapLTBJD5jPEq" version="11.2.8" type="device" pages="1"><diagram id="tFO1_1GZ6p5RLwFWiUon" name="第 1 页">7Zxdb6M4FIZ/TS4Tgc1HuEyyzaxWWmlHlWZ2584b3AQNwalxmmR+/ZhgoHBIp2FIcCX3og3HcBz8vLY5x6YjvNgeP3Gy2/zNQhqPkBUeR/iPEUIBtuXvzHDKDY7n54Y1j8LcZFeGx+gHVUZLWfdRSNPaiYKxWES7unHFkoSuRM1GOGeH+mlPLK7XuiNrCgyPKxJD69coFJvcOkV+Zf+TRutNUbPtBXnJlhQnqztJNyRkh1cm/DDCC86YyD9tjwsaZ21XtEt+3fJCafnFOE3Eey6YfVvG/y7/+0K+zl9Ou2/T57+eP4+VlxcS79UNu+rbilPRBJztk5BmXuwRnh82kaCPO7LKSg+SubRtxDZWxU8sEYqi7anjBYsZP/vCy+XUsixpj8n/NJ4zHlJeFCcskZfN1zFJM2jZWUzWE4lMOtPsMBWcfS85oNLyqoLg/CNL1I1RLujxYovZJQepX8q2VPCTPEVdgKZefonSrqdIHiohuMq0eaWBwkaU9Nal44qO/KAAXQELAVi2gVXAwlgvWNjAegOWZj3LAbCQgVXAcjTrWS6AZRlYJSzNepZnYF2G5WrWs4K7wwqCxeKjwHJrrMoIZShYRf2GVhst29INFwy1DK4Kl3a9CwZbt34k/EC4mpHx8LhguGVwXYyNh8cFA65bR8cfCZd2vQuGXJPJBACTdyzqVOrNpBr6KYrjhonE0TqRhyvZQlTa51n7RSsSz1TBNgrDrJpWGVRCsRocX6kCW2+oosG7jxGymO9Lhi5g6LQwRDdj6AOGI+TFGbB0R5IaSe95n2Wlz801Ts/tN5Mn2N7uWBXKT+vs79i1sohL+ZLfLXeXFxqNXBFRBLCb31ci01tJxDkPjkYi1z8XF0O/LhpBMOrsUSNTo5EOGvF00wgMdfvRiJll+ojVBpcHDK37kYdt5NEh2HBszeQBQ/l+5IGMPDrII9BNHjB10I88sJFHh+VG7UYPmKroRx6OkUcHeQS6PXvA9eh+5OEaeXRIgDi6yQMmycwi3cWNQIPnpRFMWBlcF7cCDY8L7i8xqz4XNwMNjgvDVJ9Z9XmboQd2nUyHndAwzLWYEbLC5TmadTmY+zC4Sly+rRsumIswuCpc2vWum+UGzNJVTwPw0AEgvlV+wKyAdx70A80kcquNNGYfTeeJRjeJwEAXAKRJOMveT85IZK0YrS4+CbQ3p3rPpT6p47ZJfbmcu37V1jQErzz/sqXfOWVzGhMRvdTdtzWvquEfFsmKq8Umqx4C4ymuu0jZnq+ouqqC9GtHqOFIEL6mAjg60y5v+zfeJ2zbJaOBAEKSbspHUe3V0NjX0l0NTUf3VkPbfhijhuvU4NjWxG3owemmhxZXyLmvImBaxijiakV4Tm+KgK7urYi2XS9GEdcpwrV7en4Aju49Y7RtcjFquFINfk/PD8DRvdUA81aRDMKOQBJaB4WoRYT+w8x7aMlUjn4/KGy+W6F61FAhoQMTSyvZasIwfD9DNPArVA7M/CT7bWoQvrX7HNXHTn9ohnDLSGCjScq4GJNkTDgnp0tAdaLo3JeiW6foYJhhw1YAOfrXc5SH1T/Fy6fQ6j8L4oef</diagram></mxfile>
Binary file added assets/problems/912.sort-an-array-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/problems/912.sort-an-array-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
100 changes: 100 additions & 0 deletions daily/2019-08-19.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
## 每日一题 - 593. 有效的正方形

### 信息卡片

- 时间:2019-06-08
- 题目链接:https://leetcode.com/problems/top-k-frequent-elements/description/
- tag:`Hash Table` `Heap`

### 题目描述

```
Given a non-empty array of integers, return the k most frequent elements.
Example 1:
Input: nums = [1,1,1,2,2,3], k = 2
Output: [1,2]
Example 2:
Input: nums = [1], k = 1
Output: [1]
Note:
You may assume k is always valid, 1 ≤ k ≤ number of unique elements.
Your algorithm's time complexity must be better than O(n log n), where n is
the array's size.
```



### 参考答案

模仿 [@raof01](https://github.com/raof01) 的思路写的JS代码,

基本思路就是: 证明四个角都是直角, 而证明直角的方式就是边长关系。

四个点一共有六个连接的线段,其中两个是对角线,另外四个是边。

对于直角来说,满足“a * a + b * b = c * c”, 由于是正方形,所以a = b, 因此c就等于
2 * a * a , 其中a为边长,c就是对角线的长度。


我们分别计算出距离的平方,如果有四个相同,另外两个相同。 且二者的关系可以满足直角,那么他就有四个直角,他就是一个正方形

```js
/*
* @lc app=leetcode id=593 lang=javascript
*
* [593] Valid Square
*/
function square(p1, p2) {
const deltaX = p1[0] - p2[0];
const deltaY = p1[1] - p2[1];

return deltaX * deltaX + deltaY * deltaY;
}
/**
* @param {number[]} p1
* @param {number[]} p2
* @param {number[]} p3
* @param {number[]} p4
* @return {boolean}
*/
var validSquare = function (p1, p2, p3, p4) {
// 证明四个角都是直角
// 证明直角的方式就是边长关系
const squares = [
square(p1, p2),
square(p1, p3),
square(p1, p4),
square(p2, p3),
square(p2, p4),
square(p3, p4)
];
let cnt1 = 0;
let cnt2 = 0;
let sum = 0;

for(let i = 0; i < squares.length; i++) {
sum += squares[i];
}

for(let i = 0; i < squares.length; i++) {
if (sum === 8 * squares[i]) {
cnt1++;
} else if(sum === 4 * squares[i]) {
cnt2++;
}
}

return cnt1 === 4 && cnt2 ===2;

}
```
### 其他优秀解答

暂无
66 changes: 66 additions & 0 deletions daily/2019-08-21.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# 毎日一题 - 桶中取黑白球

## 信息卡片

* 时间:2019-08-21
* tag:`Math` `位运算`
## 题目描述
```
有一个桶,里面有白球,黑球各100个,你必须用以下规则将球取出来:
- 每次从桶里取两个球
- 如果两个球是相同的颜色,那么再放一个黑球
- 如果两个球是不同的颜色,那么再放一个白球。
问:最后一个球是黑球的概率是多少?
```

## 参考答案

### 1. 数学分析原问题

首先我们来仔细读题看看我们有哪些知道的信息:

- 不管什么情况,每次球的总数减1;
- 两黑:黑球-1,白球0;
- 两白:黑球+1,白球-2;
- 一黑一白:黑球-1,白球0;
- 最后两球只要不是一黑一白,最后一球都是黑;

初始状态是100个黑球和100个白球,从上面三个状态可知道,黑球要么+1要么-1,而白球要么不变要么-2;在198次取球后,我们可知剩余两个球,现在假设剩余的两球为一黑一白,可以证明这是不存在的。

因为白球下降是以2的倍数下降,不可能从100下降至1,;故剩余两球肯定不是一黑一白的情况,那么最后一球的情况必然为黑。


### 2. 原问题拓展(n个黑球和m个白球)

在n+m-2次取球后,剩余两个球。

由于我们知道白球数下降是以2的倍数下降,如果m为偶数的话,是不可能下降至1;即同上1,最后一球必为黑球。如果m为奇数的话,最后必然是k黑1白(k>=1),显然对于任意的k,要么剩余全是黑球,要么黑球不断减1,最后变为1黑1白。全黑和1黑1白最后的结果都是剩余一个白球。

得出结论,最后一球结果无关黑球数量(n>=0),仅与白球数量m有关。

- 如果白球m为奇数,最后一球必然白;
- 如果白球m为偶数,最后一球必然黑;

### 3. 抽象为数学模型,严格证明

不妨设黑球为0,白球为1;

- 两黑:F(0,0) = 0;表示两个黑球生一黑;
- 两白:F(1,1) = 0;表示两个白球生一黑;
- 一黑一白:F(0,1) = 0;表示一个黑球一个白球生一白;

仔细观察就会发现这个函数F就是XOR(异或);

那么m个黑球和n个白球,就抽象为m个0和n个1作异或的结果;而且我们可知异或满足结合律和交换律(证明略,最简单的证明方法枚举)。

那么问题就很简单,对于任意多0,异或结果依然是0,所以对于任意多1,只需要考虑1个数的奇偶性就可判断最后剩余1个1还是0个1;

结论同2:

- 1(白球)的个数奇数,最后异或结果为1;
- 1(白球)的个数偶数,最后异或结果为0;


## 优秀解答

>暂缺
Loading

0 comments on commit f786039

Please sign in to comment.