各位前輩好, 小弟近期開始在練習刷題
比較常使用像是 Codewars 這個網站練習
以往都是使用簡單的 Function 作為解題的輸入, 像是:
def fibonacci(x):
# 前兩項給定 x(0) = 0, x(1) = 1
if x < 2:
return x
return fibonacci(x-1) + fibonacci(x-2)
我的輸入就是簡單的 x 等於多少就好
但最近轉到 Leetcode 網站發現一些問題, 以下面這第21題為例:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
return answer
它題目給的輸入有兩個 input, list1 與 list2
這邊我就不明白要怎麼在 Function 內引用這兩個 list
爬文找了一下好像有這個問題的人也不多, 不知道前輩們是否能說明一下或給資源去研究呢?
非常感謝, 附上我這題的 error 跟使用以前 Function 的做法
# leetcode.21
def merge_two_list(list1, list2):
ans_list = []
while True:
if len(list1) == 0:
ans_list.append(list2.pop(0))
elif len(list2) == 0:
ans_list.append(list1.pop(0))
elif list1[0] < list2[0]:
ans_list.append(list1.pop(0))
else:
ans_list.append(list2.pop(0))
if (len(list1) or len(list2)) == 0:
break
return ans_list
那個錯誤訊息是排版錯誤吧
他雖然上面寫形式是list,但它系統再輸入已經自動轉化為node形式,所以說如果要用就必須由head,然後head.next形式開始往下個節點去找。沒辦法直接使用List的function。