
大模型RAG技術:從入門到實踐
輸出: [0, 1]
解釋: nums[0] + nums[1] = 2 + 7 = 9
解題思路:
代碼實現:
def twoSum(nums, target):
num_map = {}
for i, num in enumerate(nums):
complement = target - num
if complement in num_map:
return [num_map[complement], i]
num_map[num] = i
return []
測試代碼:
nums = [2, 7, 11, 15]
target = 9
print(twoSum(nums, target)) # 輸出: [0, 1]
題目描述:反轉一個單鏈表。
示例:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
解題思路:
代碼實現:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverseList(head):
prev = None
curr = head
while curr:
next_node = curr.next
curr.next = prev
prev = curr
curr = next_node
return prev
測試代碼:
# 創建鏈表 1->2->3->4->5->NULL
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(4)
head.next.next.next.next = ListNode(5)
# 反轉鏈表
reversed_head = reverseList(head)
# 輸出反轉后的鏈表
while reversed_head:
print(reversed_head.val, end=" ")
reversed_head = reversed_head.next
# 輸出: 5 4 3 2 1
題目描述:給定一個二叉樹,返回其節點值的層序遍歷。
示例:
輸入:
3
/ \
9 20
/ \
15 7
輸出: [[3], [9, 20], [15, 7]]
解題思路:
代碼實現:
from collections import deque
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def levelOrder(root):
if not root:
return []
result = []
queue = deque([root])
while queue:
level_size = len(queue)
current_level = []
for _ in range(level_size):
node = queue.popleft()
current_level.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
result.append(current_level)
return result
測試代碼:
# 創建二叉樹
root = TreeNode(3)
root.left = TreeNode(9)
root.right = TreeNode(20)
root.right.left = TreeNode(15)
root.right.right = TreeNode(7)
# 層序遍歷
print(levelOrder(root)) # 輸出: [[3], [9, 20], [15, 7]]
通過本文的介紹,相信大家對如何高效練習Codesignal有了更深入的了解。關鍵在于制定合理的練習計劃,理解題目要求,分析解題思路,編寫并優化代碼。通過不斷的練習和總結,你一定能夠在Codesignal上取得優異的成績,并在技術面試中脫穎而出。