- 1、题目描述:
- 2、题目链接:
https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f?tpId=117&&tqId=34983&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking
-3、 设计思想:
详细操作流程看下图:
-4、视频讲解链接B站视频讲解
-5、代码:
c++版本:
class Solution {
public:
/**
*
* @param numbers int整型vector
* @param target int整型
* @return int整型vector
*/
vector<int> twoSum(vector<int>& numbers, int target) {
vector<int>res;//保存结果
map<int,int>mp;//定义一个哈希表存储numbers[i]和对应的下标
for (int i = 0; i < numbers.size(); i ++) {//进行标记
mp[numbers[i]] = i;
}
for (int i = 0; i < numbers.size(); i++) {
//每遍历一个numbers[i]就去对应的mp里找有没有target - numbers[i]
//如果有就返回结果
//如果没有就找下一个
if(mp.find(target - numbers[i]) != mp.end() && i != mp[target - numbers[i]]){
res.push_back(i + 1);
res.push_back(mp[target - numbers[i]] + 1);
return res;
}
}
return res;
}
};
Java版本:
import java.util.HashMap;
public class Solution {
public int[] twoSum(int[] numbers, int target) {
int[] res = {0,0};//保存结果
HashMap<Integer, Integer> mp = new HashMap<Integer, Integer>();//定义一个哈希表存储numbers[i]和对应的下标
for(int i = 0;i < numbers.length;i ++){//进行标记
mp.put(numbers[i],i);
}
for(int i = 0;i < numbers.length;i ++){
//每遍历一个numbers[i]就去对应的mp里找有没有target - numbers[i]
//如果有就返回结果
//如果没有就找下一个
if(mp.containsKey(target-numbers[i]) && i != mp.get(target - numbers[i])){
res[0] = i + 1;
res[1] = mp.get(target-numbers[i]) + 1;
return res;
}
}
return res;
}
}
Python版本:
#
#
# @param numbers int整型一维数组
# @param target int整型
# @return int整型一维数组
#
#
#
# @param numbers int整型一维数组
# @param target int整型
# @return int整型一维数组
#
class Solution:
def twoSum(self , numbers , target ):
# write code here
res = [0,0]#保存结果
mp = {}#定义一个哈希表存储numbers[i]和对应的下标
for i in range(len(numbers)):#进行标记
mp[numbers[i]] = i
for i in range(len(numbers)):
#每遍历一个numbers[i]就去对应的mp里找有没有target - numbers[i]
#如果有就返回结果
#如果没有就找下一个
if target - numbers[i] in mp:
if mp[target - numbers[i]] != i:
res[0] = i + 1
res[1] = mp[target - numbers[i]]+1
return res
return res
京公网安备 11010502036488号