💪 魚~ 加油呀!呀呀呀、一起來刷題吧!
target - nums[i] 是否在表中class Solution:
def twoSum(self, nums, target):
seen = {}
for i, num in enumerate(nums):
complement = target - num
if complement in seen:
return [seen[complement], i]
seen[num] = i
return []
()[]{} 的字串是否為有效的括號組合。
class Solution:
def isValid(self, s):
stack = []
mapping = {')': '(', '}': '{', ']': '['}
for char in s:
if char in mapping:
if stack and stack[-1] == mapping[char]:
stack.pop()
else:
return False
else:
stack.append(char)
return not stack
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def mergeTwoLists(self, l1, l2):
dummy = ListNode()
current = dummy
while l1 and l2:
if l1.val < l2.val:
current.next = l1
l1 = l1.next
else:
current.next = l2
l2 = l2.next
current = current.next
current.next = l1 if l1 else l2
return dummy.next
利潤 = 當前價格 - 最低價class Solution:
def maxProfit(self, prices):
min_price = float('inf')
max_profit = 0
for price in prices:
min_price = min(min_price, price)
max_profit = max(max_profit, price - min_price)
return max_profit
class Solution:
def isPalindrome(self, x):
if x < 0:
return False
original = x
reversed_num = 0
while x:
reversed_num = reversed_num * 10 + x % 10
x //= 10
return original == reversed_num
class Solution:
def longestCommonPrefix(self, strs):
if not strs:
return ""
shortest = min(strs, key=len)
for i, char in enumerate(shortest):
for s in strs:
if s[i] != char:
return shortest[:i]
return shortest
class Solution:
def isAnagram(self, s, t):
if len(s) != len(t):
return False
count = [0] * 26
for char in s:
count[ord(char) - ord('a')] += 1
for char in t:
count[ord(char) - ord('a')] -= 1
if count[ord(char) - ord('a')] < 0:
return False
return True
class Solution:
def searchInsert(self, nums, target):
left, right = 0, len(nums)
while left < right:
mid = (left + right) // 2
if nums[mid] < target:
left = mid + 1
else:
right = mid
return left
dp[i] = max(nums[i], dp[i-1] + nums[i])class Solution:
def maxSubArray(self, nums):
max_sum = current = nums[0]
for i in range(1, len(nums)):
current = max(nums[i], current + nums[i])
max_sum = max(max_sum, current)
return max_sum
class Solution:
def containsDuplicate(self, nums):
seen = set()
for num in nums:
if num in seen:
return True
seen.add(num)
return False
class Solution:
def plusOne(self, digits):
for i in range(len(digits) - 1, -1, -1):
if digits[i] < 9:
digits[i] += 1
return digits
digits[i] = 0
return [1] + digits
class Solution:
def moveZeroes(self, nums):
insert_pos = 0
for num in nums:
if num != 0:
nums[insert_pos] = num
insert_pos += 1
while insert_pos < len(nums):
nums[insert_pos] = 0
insert_pos += 1
| 類型 | 題目 |
|---|---|
| Array | Two Sum, Best Time, Max Subarray, Contains Duplicate |
| String | Valid Parentheses, Longest Common Prefix, Valid Anagram |
| Linked List | Merge Two Sorted Lists |
| Hash Table | Two Sum, Valid Anagram, Contains Duplicate |
| Two Pointers | Merge Two Sorted Lists |
| Binary Search | Search Insert Position |
| Dynamic Programming | Best Time, Max Subarray |
💪 魚~ 慢慢來呀!一題一題刷,不急的呀!呀呀呀、你可以的!
完成本教材後,點擊下方按鈕記錄你的學習進度!