Skip to content

Commit f7d0ee1

Browse files
committed
feat: add new lc/lcof problems
1 parent dc8e7d5 commit f7d0ee1

File tree

148 files changed

+11307
-5
lines changed
  • lcof2
    • 剑指 Offer II 001. 整数除法
    • 剑指 Offer II 002. 二进制加法
    • 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数
    • 剑指 Offer II 004. 只出现一次的数字
    • 剑指 Offer II 005. 单词长度的最大乘积
    • 剑指 Offer II 006. 排序数组中两个数字之和
    • 剑指 Offer II 007. 数组中和为 0 的三个数
    • 剑指 Offer II 008. 和大于等于 target 的最短子数组
    • 剑指 Offer II 009. 乘积小于 K 的子数组
    • 剑指 Offer II 010. 和为 k 的子数组
    • 剑指 Offer II 011. 0 和 1 个数相同的子数组
    • 剑指 Offer II 012. 左右两边子数组的和相等
    • 剑指 Offer II 013. 二维子矩阵的和
    • 剑指 Offer II 014. 字符串中的变位词
    • 剑指 Offer II 015. 字符串中的所有变位词
    • 剑指 Offer II 016. 不含重复字符的最长子字符串
    • 剑指 Offer II 017. 含有所有字符的最短字符串
    • 剑指 Offer II 018. 有效的回文
    • 剑指 Offer II 019. 最多删除一个字符得到回文
    • 剑指 Offer II 020. 回文子字符串的个数
    • 剑指 Offer II 021. 删除链表的倒数第 n 个结点
    • 剑指 Offer II 022. 链表中环的入口节点
    • 剑指 Offer II 023. 两个链表的第一个重合节点
    • 剑指 Offer II 024. 反转链表
    • 剑指 Offer II 025. 链表中的两数相加
    • 剑指 Offer II 026. 重排链表
    • 剑指 Offer II 027. 回文链表
    • 剑指 Offer II 028. 展平多级双向链表
    • 剑指 Offer II 029. 排序的循环链表
    • 剑指 Offer II 030. 插入、删除和随机访问都是 O(1) 的容器
    • 剑指 Offer II 031. 最近最少使用缓存
    • 剑指 Offer II 032. 有效的变位词
    • 剑指 Offer II 033. 变位词组
    • 剑指 Offer II 034. 外星语言是否排序
    • 剑指 Offer II 035. 最小时间差
    • 剑指 Offer II 036. 后缀表达式
    • 剑指 Offer II 037. 小行星碰撞
    • 剑指 Offer II 038. 每日温度
    • 剑指 Offer II 039. 直方图最大矩形面积
    • 剑指 Offer II 040. 矩阵中最大的矩形
    • 剑指 Offer II 041. 滑动窗口的平均值
    • 剑指 Offer II 042. 最近请求次数
    • 剑指 Offer II 043. 往完全二叉树添加节点
    • 剑指 Offer II 044. 二叉树每层的最大值
    • 剑指 Offer II 045. 二叉树最底层最左边的值
    • 剑指 Offer II 046. 二叉树的右侧视图
    • 剑指 Offer II 047. 二叉树剪枝
    • 剑指 Offer II 048. 序列化与反序列化二叉树
    • 剑指 Offer II 049. 从根节点到叶节点的路径数字之和
    • 剑指 Offer II 050. 向下的路径节点之和
    • 剑指 Offer II 051. 节点之和最大的路径
    • 剑指 Offer II 052. 展平二叉搜索树
    • 剑指 Offer II 053. 二叉搜索树中的中序后继
    • 剑指 Offer II 054. 所有大于等于节点的值之和
    • 剑指 Offer II 055. 二叉搜索树迭代器
    • 剑指 Offer II 056. 二叉搜索树中两个节点之和
    • 剑指 Offer II 057. 值和下标之差都在给定的范围内
    • 剑指 Offer II 058. 日程表
    • 剑指 Offer II 059. 数据流的第 K 大数值
    • 剑指 Offer II 060. 出现频率最高的 k 个数字
    • 剑指 Offer II 061. 和最小的 k 个数对
    • 剑指 Offer II 062. 实现前缀树
    • 剑指 Offer II 063. 替换单词
    • 剑指 Offer II 064. 神奇的字典
    • 剑指 Offer II 065. 最短的单词编码
    • 剑指 Offer II 066. 单词之和
    • 剑指 Offer II 067. 最大的异或
    • 剑指 Offer II 068. 查找插入位置
    • 剑指 Offer II 069. 山峰数组的顶部
    • 剑指 Offer II 070. 排序数组中只出现一次的数字
    • 剑指 Offer II 071. 按权重生成随机数
    • 剑指 Offer II 072. 求平方根
    • 剑指 Offer II 073. 狒狒吃香蕉
    • 剑指 Offer II 074. 合并区间
    • 剑指 Offer II 075. 数组相对排序
    • 剑指 Offer II 076. 数组中的第 k 大的数字
    • 剑指 Offer II 077. 链表排序
    • 剑指 Offer II 078. 合并排序链表
    • 剑指 Offer II 079. 所有子集
    • 剑指 Offer II 080. 含有 k 个元素的组合
    • 剑指 Offer II 081. 允许重复选择元素的组合
    • 剑指 Offer II 082. 含有重复元素集合的组合
    • 剑指 Offer II 083. 没有重复元素集合的全排列
    • 剑指 Offer II 084. 含有重复元素集合的全排列
    • 剑指 Offer II 085. 生成匹配的括号
    • 剑指 Offer II 086. 分割回文子字符串
    • 剑指 Offer II 087. 复原 IP
    • 剑指 Offer II 088. 爬楼梯的最少成本
    • 剑指 Offer II 089. 房屋偷盗
    • 剑指 Offer II 090. 环形房屋偷盗
    • 剑指 Offer II 091. 粉刷房子
    • 剑指 Offer II 092. 翻转字符
    • 剑指 Offer II 093. 最长斐波那契数列
    • 剑指 Offer II 094. 最少回文分割
    • 剑指 Offer II 095. 最长公共子序列
    • 剑指 Offer II 096. 字符串交织
    • 剑指 Offer II 097. 子序列的数目
    • 剑指 Offer II 098. 路径的数目
    • 剑指 Offer II 099. 最小路径之和
    • 剑指 Offer II 100. 三角形中最小路径之和
    • 剑指 Offer II 101. 分割等和子串
    • 剑指 Offer II 102. 加减的目标值
    • 剑指 Offer II 103. 最少的硬币数目
    • 剑指 Offer II 104. 排列的数目
    • 剑指 Offer II 105. 岛屿的最大面积
    • 剑指 Offer II 106. 二分图
    • 剑指 Offer II 107. 矩阵中的距离
    • 剑指 Offer II 108. 单词演变
    • 剑指 Offer II 109. 开密码锁
    • 剑指 Offer II 110. 所有路径
    • 剑指 Offer II 111. 计算除法
    • 剑指 Offer II 112. 最长递增路径
    • 剑指 Offer II 113. 课程顺序
    • 剑指 Offer II 114. 外星文字典
    • 剑指 Offer II 115. 重建序列
    • 剑指 Offer II 116. 朋友圈
    • 剑指 Offer II 117. 相似的字符串
    • 剑指 Offer II 118. 多余的边
    • 剑指 Offer II 119. 最长连续序列
  • solution

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

148 files changed

+11307
-5
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
- [LeetCode](./solution/README.md)
3030
- [LeetCode 《剑指 Offer(第 2 版)》](./lcof/README.md)
31+
- [LeetCode 《剑指 Offer(专项突击版)》](./lcof2/README.md)
3132
- [LeetCode 《程序员面试金典(第 6 版)》](./lcci/README.md)
3233

3334
## 基础算法通关

lcof2/README.md

+137
Large diffs are not rendered by default.

lcof2/lcof2.jpg

71.5 KB
Loading

lcof2/summary.md

+120
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# [剑指 Offer II 001. 整数除法](https://leetcode-cn.com/problems/xoh6Oh)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
<p>给定两个整数 <code>a</code> 和 <code>b</code> ,求它们的除法的商 <code>a/b</code> ,要求不得使用乘号 <code>'*'</code>、除号 <code>'/'</code> 以及求余符号 <code>'%'</code>&nbsp;。</p>
8+
9+
<p>&nbsp;</p>
10+
11+
<p><strong>注意:</strong></p>
12+
13+
<ul>
14+
<li>整数除法的结果应当截去(<code>truncate</code>)其小数部分,例如:<code>truncate(8.345) = 8</code>&nbsp;以及&nbsp;<code>truncate(-2.7335) = -2</code></li>
15+
<li>假设我们的环境只能存储 32 位有符号整数,其数值范围是 <code>[−2<sup>31</sup>,&nbsp;2<sup>31</sup>−1]</code>。本题中,如果除法结果溢出,则返回 <code>2<sup>31&nbsp;</sup>− 1</code></li>
16+
</ul>
17+
18+
<p>&nbsp;</p>
19+
20+
<p><strong>示例 1:</strong></p>
21+
22+
<pre>
23+
<strong>输入:</strong>a = 15, b = 2
24+
<strong>输出:</strong>7
25+
<strong><span style="white-space: pre-wrap;">解释:</span></strong>15/2 = truncate(7.5) = 7
26+
</pre>
27+
28+
<p><strong>示例 2:</strong></p>
29+
30+
<pre>
31+
<strong>输入:</strong>a = 7, b = -3
32+
<strong>输出:</strong><span style="white-space: pre-wrap;">0</span>
33+
<strong><span style="white-space: pre-wrap;">解释:</span></strong>7/-3 = truncate(-2.33333..) = -2</pre>
34+
35+
<p><strong>示例 3:</strong></p>
36+
37+
<pre>
38+
<strong>输入:</strong>a = 0, b = 1
39+
<strong>输出:</strong><span style="white-space: pre-wrap;">0</span></pre>
40+
41+
<p><strong>示例 4:</strong></p>
42+
43+
<pre>
44+
<strong>输入:</strong>a = 1, b = 1
45+
<strong>输出:</strong><span style="white-space: pre-wrap;">1</span></pre>
46+
47+
<p>&nbsp;</p>
48+
49+
<p><strong>提示:</strong></p>
50+
51+
<ul>
52+
<li><code>-2<sup>31</sup>&nbsp;&lt;= a, b &lt;= 2<sup>31</sup>&nbsp;- 1</code></li>
53+
<li><code>b != 0</code></li>
54+
</ul>
55+
56+
<p>&nbsp;</p>
57+
58+
<p>注意:本题与主站 29&nbsp;题相同:<a href="https://leetcode-cn.com/problems/divide-two-integers/">https://leetcode-cn.com/problems/divide-two-integers/</a></p>
59+
60+
<p>&nbsp;</p>
61+
62+
63+
## 解法
64+
65+
<!-- 这里可写通用的实现逻辑 -->
66+
67+
<!-- tabs:start -->
68+
69+
### **Python3**
70+
71+
<!-- 这里可写当前语言的特殊实现逻辑 -->
72+
73+
```python
74+
75+
```
76+
77+
### **Java**
78+
79+
<!-- 这里可写当前语言的特殊实现逻辑 -->
80+
81+
```java
82+
83+
```
84+
85+
### **...**
86+
87+
```
88+
89+
```
90+
91+
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# [剑指 Offer II 002. 二进制加法](https://leetcode-cn.com/problems/JFETK5)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
<p>给定两个 01 字符串&nbsp;<code>a</code>&nbsp;&nbsp;<code>b</code>&nbsp;,请计算它们的和,并以二进制字符串的形式输出。</p>
8+
9+
<p>输入为 <strong>非空 </strong>字符串且只包含数字&nbsp;<code>1</code>&nbsp;&nbsp;<code>0</code>。</p>
10+
11+
<p>&nbsp;</p>
12+
13+
<p><strong>示例&nbsp;1:</strong></p>
14+
15+
<pre>
16+
<strong>输入:</strong> a = &quot;11&quot;, b = &quot;10&quot;
17+
<strong>输出:</strong> &quot;101&quot;</pre>
18+
19+
<p><strong>示例&nbsp;2:</strong></p>
20+
21+
<pre>
22+
<strong>输入:</strong> a = &quot;1010&quot;, b = &quot;1011&quot;
23+
<strong>输出:</strong> &quot;10101&quot;</pre>
24+
25+
<p>&nbsp;</p>
26+
27+
<p><strong>提示:</strong></p>
28+
29+
<ul>
30+
<li>每个字符串仅由字符 <code>&#39;0&#39;</code> 或 <code>&#39;1&#39;</code> 组成。</li>
31+
<li><code>1 &lt;= a.length, b.length &lt;= 10^4</code></li>
32+
<li>字符串如果不是 <code>&quot;0&quot;</code> ,就都不含前导零。</li>
33+
</ul>
34+
35+
<p>&nbsp;</p>
36+
37+
<p><meta charset="UTF-8" />注意:本题与主站 67&nbsp;题相同:<a href="https://leetcode-cn.com/problems/add-binary/">https://leetcode-cn.com/problems/add-binary/</a></p>
38+
39+
40+
## 解法
41+
42+
<!-- 这里可写通用的实现逻辑 -->
43+
44+
<!-- tabs:start -->
45+
46+
### **Python3**
47+
48+
<!-- 这里可写当前语言的特殊实现逻辑 -->
49+
50+
```python
51+
52+
```
53+
54+
### **Java**
55+
56+
<!-- 这里可写当前语言的特殊实现逻辑 -->
57+
58+
```java
59+
60+
```
61+
62+
### **...**
63+
64+
```
65+
66+
```
67+
68+
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# [剑指 Offer II 003. 前 n 个数字二进制中 1 的个数](https://leetcode-cn.com/problems/w3tCBm)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
<p>给定一个非负整数 <code>n</code><b>&nbsp;</b>,请计算 <code>0</code> 到 <code>n</code> 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。</p>
8+
9+
<p>&nbsp;</p>
10+
11+
<p><strong>示例 1:</strong></p>
12+
13+
<pre>
14+
<strong>输入: </strong>n =<strong> </strong>2
15+
<strong>输出: </strong>[0,1,1]
16+
<strong>解释:
17+
</strong>0 --&gt; 0
18+
1 --&gt; 1
19+
2 --&gt; 10
20+
</pre>
21+
22+
<p><strong>示例&nbsp;2:</strong></p>
23+
24+
<pre>
25+
<strong>输入: </strong>n =<strong> </strong>5
26+
<strong>输出: </strong><code>[0,1,1,2,1,2]
27+
</code><span style="white-space: pre-wrap;"><strong>解释:</strong>
28+
</span>0 --&gt; 0
29+
1 --&gt; 1
30+
2 --&gt; 10
31+
3 --&gt; 11
32+
4 --&gt; 100
33+
5 --&gt; 101
34+
</pre>
35+
36+
<p>&nbsp;</p>
37+
38+
<p><strong>说明 :</strong></p>
39+
40+
<ul>
41+
<li><code>0 &lt;= n &lt;= 10<sup>5</sup></code></li>
42+
</ul>
43+
44+
<p>&nbsp;</p>
45+
46+
<p><strong>进阶:</strong></p>
47+
48+
<ul>
49+
<li>给出时间复杂度为&nbsp;<code>O(n*sizeof(integer))</code><strong>&nbsp;</strong>的解答非常容易。但你可以在线性时间&nbsp;<code>O(n)</code><strong>&nbsp;</strong>内用一趟扫描做到吗?</li>
50+
<li>要求算法的空间复杂度为&nbsp;<code>O(n)</code>&nbsp;。</li>
51+
<li>你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++ 中的&nbsp;<code>__builtin_popcount</code><strong>&nbsp;</strong>)来执行此操作。</li>
52+
</ul>
53+
54+
<p>&nbsp;</p>
55+
56+
<p><meta charset="UTF-8" />注意:本题与主站 338&nbsp;题相同:<a href="https://leetcode-cn.com/problems/counting-bits/">https://leetcode-cn.com/problems/counting-bits/</a></p>
57+
58+
59+
## 解法
60+
61+
<!-- 这里可写通用的实现逻辑 -->
62+
63+
<!-- tabs:start -->
64+
65+
### **Python3**
66+
67+
<!-- 这里可写当前语言的特殊实现逻辑 -->
68+
69+
```python
70+
71+
```
72+
73+
### **Java**
74+
75+
<!-- 这里可写当前语言的特殊实现逻辑 -->
76+
77+
```java
78+
79+
```
80+
81+
### **...**
82+
83+
```
84+
85+
```
86+
87+
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# [剑指 Offer II 004. 只出现一次的数字](https://leetcode-cn.com/problems/WGki4K)
2+
3+
## 题目描述
4+
5+
<!-- 这里写题目描述 -->
6+
7+
<p>给你一个整数数组&nbsp;<code>nums</code> ,除某个元素仅出现 <strong>一次</strong> 外,其余每个元素都恰出现 <strong>三次 。</strong>请你找出并返回那个只出现了一次的元素。</p>
8+
9+
<p>&nbsp;</p>
10+
11+
<p><strong>示例 1:</strong></p>
12+
13+
<pre>
14+
<strong>输入:</strong>nums = [2,2,3,2]
15+
<strong>输出:</strong>3
16+
</pre>
17+
18+
<p><strong>示例 2:</strong></p>
19+
20+
<pre>
21+
<strong>输入:</strong>nums = [0,1,0,1,0,1,100]
22+
<strong>输出:</strong>100
23+
</pre>
24+
25+
<p>&nbsp;</p>
26+
27+
<p><strong>提示:</strong></p>
28+
29+
<ul>
30+
<li><code>1 &lt;= nums.length &lt;= 3 * 10<sup>4</sup></code></li>
31+
<li><code>-2<sup>31</sup> &lt;= nums[i] &lt;= 2<sup>31</sup> - 1</code></li>
32+
<li><code>nums</code> 中,除某个元素仅出现 <strong>一次</strong> 外,其余每个元素都恰出现 <strong>三次</strong></li>
33+
</ul>
34+
35+
<p>&nbsp;</p>
36+
37+
<p><strong>进阶:</strong>你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?</p>
38+
39+
<p>&nbsp;</p>
40+
41+
<p><meta charset="UTF-8" />注意:本题与主站 137&nbsp;题相同:<a href="https://leetcode-cn.com/problems/single-number-ii/">https://leetcode-cn.com/problems/single-number-ii/</a></p>
42+
43+
44+
## 解法
45+
46+
<!-- 这里可写通用的实现逻辑 -->
47+
48+
<!-- tabs:start -->
49+
50+
### **Python3**
51+
52+
<!-- 这里可写当前语言的特殊实现逻辑 -->
53+
54+
```python
55+
56+
```
57+
58+
### **Java**
59+
60+
<!-- 这里可写当前语言的特殊实现逻辑 -->
61+
62+
```java
63+
64+
```
65+
66+
### **...**
67+
68+
```
69+
70+
```
71+
72+
<!-- tabs:end -->

0 commit comments

Comments
 (0)