繁體字標題:簡潔高效Facebook面試題解密攻略

  Aihao商城     2024-12-30   ♧  3  
Aihao商城

在這個數位時代,Facebook作為全球最大的社交網絡平台,對於技術開發人員的要求相當高。以下是一則Facebook的面试題,關於程式設計的部分,讓我們一探究竟。

問題描述

設計一個函數,該函數接受一個整數陣列作為輸入,並返回陣列中所有兩兩相加等於給定數的元素對的索引。

輸入

整數陣列`nums`,長度為`n`。

整數`target`。

輸出

返回一個包含所有兩兩相加等於`target`的元素對的索引的陣列。如果沒有這樣的元素對,則返回空陣列。

範例

```

輸入nums = [1, 2, 3, 4, 5], target = 7

輸出[1, 3] // 索引1和索引3的元素相加等於7

輸入nums = [1, 2, 3, 4, 5], target = 8

輸出[2, 4] // 索引2和索引4的元素相加等於8

```

解題思路

這個問題可以通過使用雙指針的方法來解決。首先,我們將陣列排序,然後使用兩個指針分別指向陣列的首尾。如果兩個指針指向的元素相加等於目標值,我們將這對索引加入到結果陣列中,並將兩個指針都向內移動一位。如果相加結果小於目標值,我們將左指針向右移動一位;如果相加結果大於目標值,我們將右指針向左移動一位。重複此過程,直到兩個指針相遇。

程式碼

```python

def two_sum(nums, target):

nums.sort()

left, right = 0, len(nums) 1

result = []

while left < right:

current_sum = nums[left] + nums[right]

if current_sum == target:

result.append(left)

result.append(right)

left += 1

right = 1

elif current_sum < target:

left += 1

else:

right = 1

return result

```

注意事項

1. 在進行排序時,我們使用Python的內建函數`sort()`,這會對陣列進行原地排序。

2. 在雙指針遍歷陣列的過程中,我們需要確保不會重複添加相同的索引對。

3. 如果陣列中存在多對相加等於目標值的元素對,我們需要將所有這些對都加入到結果陣列中。

透過這個問題,Facebook的招聘團隊可以考察應徵者對程式設計基礎的掌握程度,以及解決問題的邏輯思維。希望這個問題能幫助你準備好Facebook的技術面試。

相關文章