香港用國內手機上Facebook攻略
2024 / 12 / 31
在這個數位時代,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的技術面試。