- 最長無重覆子串 (Longest Substring Without Repeating Characters)
題目描述:給定一個字符串,請你找出其中不含有重覆字符的最長子串的長度。
def lengthOfLongestSubstring(s):
max_length = 0
start = 0
char_map = {}
for i, char in enumerate(s):
if char in char_map and char_map[char] >= start:
start = char_map[char] + 1
char_map[char] = i
max_length = max(max_length, i - start + 1)
return max_length
- 盛最多水的容器 (Container With Most Water)
題目描述:給你 n 個非負整數 a1,a2,...,an,每個數代表了坐標中的一個點 (i, ai) 。在坐標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中的兩條線,使得與 x 軸共同構成的容器可以容納最多的水。
def maxArea(height):
max_area = 0
left = 0
right = len(height) - 1
while left < right:
max_area = max(max_area, min(height[left], height[right]) * (right - left))
if height[left] < height[right]:
left += 1
else:
right -= 1
return max_area
- 全排列 (Permutations)
題目描述:給定一個沒有重覆數字的序列,返回其所有可能的全排列。
def permute(nums):
def backtrack(first=0):
if first == n:
output.append(nums[:])
for i in range(first, n):
nums[first], nums[i] = nums[i], nums[first]
backtrack(first + 1)
nums[first], nums[i] = nums[i], nums[first]
n = len(nums)
output = []
backtrack()
return output
- 合並區間 (Merge Intervals)
題目描述:給出一個區間的集合,請合並所有重疊的區間。
def merge(intervals):
intervals.sort(key=lambda x: x[0])
merged = []
for interval in intervals:
if not merged or merged[-1][1] < interval[0]:
merged.append(interval)
else:
merged[-1][1] = max(merged[-1][1], interval[1])
return merged