码迷,mamicode.com
首页 > 编程语言 > 详细

两数之和(Python and C++解法)

时间:2020-05-30 01:25:11      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:int   pytho   两数之和   rate   ssi   这一   leetcode   space   eth   

题目:

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum

Python题解:

 1 class Sloution(object):
 2     @staticmethod  # two_sum方法不涉及对类属性的操作
 3     def two_sum(nums, target):
 4         num_store = dict()  # 存储key-value
 5         for i, num in enumerate(nums):
 6             if target - num in num_store:
 7                 return [i, num_store[target - num]]
 8             else:
 9                 num_store[num] = i  # 此处key是num,value是i,需要使用num定位其下标i
10 
11 if __name__ == __main__:
12     the_target = 9
13     the_nums = [2, 7, 11, 15]
14     s = Sloution()
15     result = s.two_sum(the_nums, the_target)
16     print(result)  # [1, 0]

C++题解:

 1 #include "pch.h"
 2 #include <iostream>
 3 #include <vector>
 4 #include <unordered_map>
 5 using namespace std;
 6 
 7 class Sloution {
 8 public:
 9     vector<int> twoSum(vector<int> &nums, int target) {  // vector作为函数的参数或者返回值时需要注意:“&”绝对不能少
10         unordered_map<int, int> hash;  // unordered_map底层是哈希表,查找效率较高
11         vector<int> result;
12         int numsSize = nums.size();
13         for (int i = 0; i < numsSize; i++) {
14             int numToFind = target - nums[i];
15             if (hash.find(numToFind) != hash.end()) {  // 判断一个值是否在哈希表中的方法
16                 result.push_back(i);
17                 result.push_back(hash[numToFind]);
18                 return result;
19             }
20             else
21                 hash[nums[i]] = i;
22         }
23         //return result;  // leetcode上必须有这一行的返回结果
24     }
25 };
26 
27 int main() {
28     int theTarget = 9;
29     vector<int> theNums{2, 7, 11, 15};  // 初始化vector的方法
30     Sloution s;
31     for (auto res: s.twoSum(theNums, theTarget)) {  // 打印vector的方法
32         cout << res << " ";  // 1 0
33     }
34 }

 

两数之和(Python and C++解法)

标签:int   pytho   两数之和   rate   ssi   这一   leetcode   space   eth   

原文地址:https://www.cnblogs.com/kongzimengzixiaozhuzi/p/12990301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!