尝试了两种方法,第一种超越了99.75%的解,看了一下前面的好像没有删除操作。
26. 删除排序数组中的重复项
- 双指针方法
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
j=1
for i in range(1,len(nums)):
if (nums[i]!=nums[i-1]):
nums[j]=nums[i]
j+=1
for k in range(len(nums)-j):
del nums[-1]
return len(nums)
- 直接delete,代码只有四行,但是时间复杂度比较高因为每一次delete都会重新排序
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
for i in range(1,len(nums))[::-1]:
if (nums[i]==nums[i-1]):
del nums[i]
return len(nums)
11. 盛最多水的容器
最开始直接双循环果不其然超时了,想着用双指针但是没想到从两边开始,最后看了一眼题解思路
class Solution:
def maxArea(self, height: List[int]) -> int:
a,b,maxarea=0,len(height)-1,0
while a<b:
w=b-a
#maxarea=max(maxarea,min(height[a],height[b])*(b-a))#嵌套太多导致时间太长
if height[a]<height[b]:
h=height[a]
a+=1
else:
h=height[b]
b-=1
if len(height)==2:
maxarea=min(height)
return maxarea