汇芳书院

专注计算机视觉、机器学习、分布式计算等领域, 兼聊投资、写作、生活

0%

两数之和

暴力解法

1
2
3
4
5
6
7
8
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
n = len(nums)
for i in range(n):
for j in range(i+1, n):
if nums[i] + nums[j] == target:
return [i, j]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
std::vector<int> ans;
for (int i = 0; i < nums.size(); i++) {
for (int j = i + 1; j < nums.size(); j++){
if (nums[i] + nums[j] == target){
return std::vector<int>{i, j};
}
}

}
return ans;

}
};

哈希表

1
2
3
4
5
6
7
8
9
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashtable = dict()
for k, v in enumerate(nums):
tmp = target - v
if tmp in hashtable:
return [hashtable[tmp],k]
else:
hashtable[v] = k
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> hash_table;
for (int i = 0; i < nums.size(); i++) {
auto it = hash_table.find(nums[i]);
if (it == hash_table.end()){
hash_table[target-nums[i]] = i;
}else{
return std::vector<int>{it->second, i};
}
}
return {};
}
};
坚持原创分享,您的支持将鼓励我继续创作

欢迎关注我的其它发布渠道

------------- 本文结束,感谢阅读 如有问题可留言交流 -------------