1
0
mirror of https://github.com/SunnyQjm/algorithm-review.git synced 2026-06-03 08:16:43 +08:00
This commit is contained in:
2020-06-29 11:58:15 +08:00
parent c97f4f4591
commit 6aa2d8e276
7 changed files with 20 additions and 8 deletions
+1 -1
View File
@@ -28,7 +28,7 @@
# 3 3
# / \
# 4 4
# 返回 false
# 返回 false。
#######################################################################################
+11
View File
@@ -106,6 +106,17 @@ class Solution:
return res
def maxSlidingWindow2(self, nums, k):
"""
思路:
1. 用一个双向队列来存储处于窗口内的索引值,该队列有如下性质:
- 队列中的元素不会超过窗口大小k
- 保证队头元素对应的数一定是当前队列里面最大的值
2. 遍历所有的数,每轮执行如下流程:
- 如果当前队列中元素已经有k个了,则首先左出队一个元素;
- 接着将队列中比当前元素小的数都右出队;
- 将当前索引加到队列当中;
- 如果当前索引大于等于k-1,则取队头元素加入到结果集当中
"""
if not nums:
return []
# window是一个双向队列
+1 -1
View File
@@ -36,7 +36,7 @@ class Solution:
思路:
1. 用二分查找试图找到目标值;
2. 找到则返回其索引,没找到则其可能被插入的位置
2. 找到则返回其索引,没找到则返回其可能被插入的位置
"""
left, right = 0, len(nums) - 1
while left + 1 < right:
@@ -45,7 +45,7 @@ class Solution:
if cur.val == pre.val:
pre.next = cur.next
else:
last, pre = cur.val, cur
pre = cur
cur = cur.next
return head
+2 -1
View File
@@ -25,6 +25,7 @@
# n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。
###################################################################################
class Solution:
def myPow(self, x, n):
"""
@@ -55,7 +56,7 @@ class Solution:
return x * self.myPow(x, n - 1)
# 处理n为偶数的情况
return self.myPow(x * x, n / 2)
return self.myPow(x * x, n // 2)
if __name__ == '__main__':
+1 -1
View File
@@ -30,7 +30,7 @@ class Solution:
思路:
nums => size = n
1. 采用动态规划的思想;
2. dp[i] => 表示[i:n-1]范围内的最长的上升子序列的长度;
2. dp[i] => 表示[i:n-1]范围内包含nums[i]的最长的上升子序列的长度;
3. 状态转移方程:
f(i) = 1 i == n - 1
1 + max{f(j) | nums[j] > nums[i] && i < j < n} i < n - 1
+3 -3
View File
@@ -8,7 +8,7 @@
# 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
#
# 示例 1:
# 输入: 1 1
# 输入: 1 1
# / \ / \
# 2 3 2 3
#
@@ -17,7 +17,7 @@
# 输出: true
#
# 示例 2:
# 输入: 1 1
# 输入: 1 1
# / \
# 2 2
#
@@ -26,7 +26,7 @@
# 输出: false
#
# 示例 3:
# 输入: 1 1
# 输入: 1 1
# / \ / \
# 2 1 1 2
#