輸出: [0, 1]
解釋: nums[0] + nums[1] = 2 + 7 = 9

解題思路

  1. 使用哈希表存儲數組中的元素及其索引。
  2. 遍歷數組,計算目標值與當前元素的差值。
  3. 如果差值在哈希表中,則返回差值的索引和當前元素的索引。

代碼實現

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]

4.2 示例2:反轉鏈表

題目描述:反轉一個單鏈表。

示例

輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL

解題思路

  1. 使用三個指針:prev、curr、next。
  2. 遍歷鏈表,將當前節點的next指針指向prev。
  3. 更新prev、curr、next指針。

代碼實現

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

4.3 示例3:二叉樹的層序遍歷

題目描述:給定一個二叉樹,返回其節點值的層序遍歷。

示例

輸入:
3
/ \
9 20
/ \
15 7
輸出: [[3], [9, 20], [15, 7]]

解題思路

  1. 使用隊列進行層序遍歷。
  2. 將根節點入隊。
  3. 遍歷隊列,將當前層的節點值存入結果列表,并將下一層的節點入隊。

代碼實現

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]]

5. 總結

通過本文的介紹,相信大家對如何高效練習Codesignal有了更深入的了解。關鍵在于制定合理的練習計劃,理解題目要求,分析解題思路,編寫并優化代碼。通過不斷的練習和總結,你一定能夠在Codesignal上取得優異的成績,并在技術面試中脫穎而出。

上一篇:

如何使用國內信用卡訂閱Claude:詳細指南

下一篇:

Ollama查看正在運行的模型:本地語言模型的革命性平臺
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費