LeetCode11 盛最多水的容器
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
1 | class Solution: |
LeetCode26. 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class Solution:
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums)
if n==0:
return 0
index = 0
for i in range(n):
if nums[index] != nums[i]:
index += 1
nums[index] = nums[i]
return index + 1
LeetCode80. 删除排序数组中的重复项 II
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class Solution:
def removeDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
m = len(nums)
if m <= 2:
return m
index = 1
for i in range(2,m):
if nums[i] != nums[index-1]:
index += 1
nums[index] = nums[i]
return index+1
LeetCode75. 颜色分类
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 class Solution:
def sortColors(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
m = len(nums)
r,b = 0,m-1
i = 0
while i<b+1:
if nums[i] == 0:
nums[i],nums[r] = nums[r],nums[i]
i += 1
r += 1
elif nums[i] == 2:
nums[i],nums[b] = nums[b],nums[i]
b -= 1
else:
i += 1
return
LeetCode713. 乘积小于K的子数组
给定一个正整数数组 nums。
找出该数组内乘积小于 k 的连续的子数组的个数。
1 | class Solution(object): |