請ChatGPT幫我根據本週學習到的類型,隨機出幾道題目。
要求我們在一個股票價格的列表中找出最大收益,只能買一次股票,然後賣一次股票,並且要確保賣的時間在買的時間之後。
class Solution:
def maxProfit(prices):
min_price = int
max_profit = 0
for price in prices:
if price < min_price:
min_price = price
elif price - min_price > max_profit:
max_profit = price - min_price
return max_profit
給定一個單向鏈表,將其節點的順序反轉,並返回反轉後的鏈表頭節點。
def reverseList_while(self, head: Optional[ListNode]) -> Optional[ListNode]:
prev = None
curr = head
while curr:
next_temp = curr.next # 暫存當前節點的下一個節點
curr.next = prev # 將當前節點的 next 指向前一個節點
prev = curr # prev 向前移動到當前節點
curr = next_temp # curr 向前移動到下一個節點
return prev # 最終 prev 會指向新的頭節點
這題好像也可以用遞迴做。
給定一個包含 0、1 和 2 的陣列,你需要對這個陣列進行就地排序,使得相同的數字被分組排列,順序是 0, 1, 2。重要的是,你必須就地修改陣列,而不能使用額外的空間(除了常數級別的額外空間)。
題目需求
nums
。class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
buckets = [[] for _ in range(3)]
for n in nums:
buckets[n].append(n)
nums.clear()
nums.extend([n for sublist in buckets for n in sublist])
第一週挑戰接近尾聲了,即將進入第二個學習主題——Tree,本週透過較短的影片和部落格文章學習了許多基本概念,在解題上巧妙地運用這些概念,能夠顯著提升運算效能,這階段主要是學習基本概念,打好基礎,接下來的挑戰將運用這些概念來構建適用於不同場景的演算法。
這些演算法就像工具箱中的工具,根據不同的問題場景,我們可以靈活地選擇並使用最合適的演算法。在接下來的學習中,我期待能更深入地理解如何將這些算法應用到實際場景,並且解決更多具有挑戰性的問題。隨著知識的積累,這些工具將不再是抽象的理論,而是實際解決問題的有力武器。期待第二週的Tree主題挑戰,看看如何在實戰中應用這些學到的技巧!