要求
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
解题— —暴力破解
C++版本#includePython版本using namespace std; #include void printVector(vector & v) { for (vector ::iterator it = v.begin(); it != v.end(); it++) { cout << *it << " "; } cout << endl; } class Solution { public: vector twoSum(vector & nums, int target) { vector ans; for (int i = 0; i < nums.size(); i++) { for (int j = i + 1; j < nums.size(); j++) { if (nums[i] + nums[j] == target) { ans.push_back(i); ans.push_back(j); return ans; } } } return ans; }; }; void test01() { Solution s; vector nums; nums.push_back(2); nums.push_back(7); nums.push_back(11); nums.push_back(15); printVector(nums); int target = 9; vector result; result = s.twoSum(nums,target); printVector(result); } void test02() { Solution s; vector nums; nums.push_back(3); nums.push_back(2); nums.push_back(4); printVector(nums); int target = 6; vector result; result = s.twoSum(nums, target); printVector(result); } void test03() { Solution s; vector nums; nums.push_back(3); nums.push_back(3); printVector(nums); int target = 6; vector result; result = s.twoSum(nums, target); printVector(result); } int main() { test01(); cout << "------------------" << endl; test02(); cout << "------------------" << endl; test03(); system("pause"); return 0; }
class Solution:
def twoSum(self,nums,target):
for i in range(0,len(nums)):
for j in range(i+1,len(nums)):
if nums[i]+nums[j] == target:
return [i,j]
def test01():
nums = [2,7,11,15]
target = 9
s = Solution()
print(s.twoSum(nums,target))
def test02():
nums = [3,2,4]
target = 6
s = Solution()
print(s.twoSum(nums,target))
def test03():
nums = [3,3]
target = 6
s = Solution()
print(s.twoSum(nums,target))
if __name__=="__main__":
test01()
print("--------------")
test02()
print("--------------")
test03()
Java版本
package com.hailei_01;
public class TwoSum {
public static void main(String[] args) {
int[] nums1 = {2,7,11,15};
int target1 = 9;
int[] result1 = twoSum(nums1, target1);
System.out.println(arrayToString(result1));
System.out.println("-------------------");
int[] nums2 = {3,2,4};
int target2 = 6;
int[] result2 = twoSum(nums2, target2);
System.out.println(arrayToString(result2));
System.out.println("-------------------");
int[] nums3 = {3,3};
int target3 = 6;
int[] result3 = twoSum(nums3, target3);
System.out.println(arrayToString(result3));
}
public static int[] twoSum(int[] nums, int target) {
int []ans=new int[2];
for(int i=0;i
for(int j=(i+1);j
if(nums[i]+nums[j]==target){
ans[0]=i;
ans[1]=j;
return ans;
}
}
}
return ans;
}
//把数组中的元素按照指定规则组成一个字符串
public static String arrayToString(int[] arr) {
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
sb.append(arr[i]);
} else {
sb.append(arr[i]).append(",");
}
}
sb.append("]");
String s = sb.toString();
return s;
}
}
解题— —升级
#includePython版本using namespace std; #include #include
class Solution:
def twoSum(self, nums, target):
hashmap = {}
for ind,num in enumerate(nums):
hashmap[num] = ind
for i,num in enumerate(nums):
j = hashmap.get(target - num)
if j is not None and i!=j:
return [i,j]
def test01():
nums = [2,7,11,15]
target = 9
s = Solution()
print(s.twoSum(nums,target))
def test02():
nums = [3,2,4]
target = 6
s = Solution()
print(s.twoSum(nums,target))
def test03():
nums = [3,3]
target = 6
s = Solution()
print(s.twoSum(nums,target))
if __name__=="__main__":
test01()
print("--------------")
test02()
print("--------------")
test03()
Java版本
package com.hailei_02;
import java.util.HashMap;
public class TwoSum {
public static void main(String[] args) {
int[] nums1 = {2,7,11,15};
int target1 = 9;
int[] result1 = twoSum(nums1, target1);
System.out.println(arrayToString(result1));
System.out.println("-------------------");
int[] nums2 = {3,2,4};
int target2 = 6;
int[] result2 = twoSum(nums2, target2);
System.out.println(arrayToString(result2));
System.out.println("-------------------");
int[] nums3 = {3,3};
int target3 = 6;
int[] result3 = twoSum(nums3, target3);
System.out.println(arrayToString(result3));
}
public static int[] twoSum(int[] nums, int target) {
int[] arr=new int[2];
HashMap map=new HashMap();
for(int i=0;i
if(map.containsKey(target-nums[i])){
arr[0]=map.get(target-nums[i]);
arr[1]=i;
}
map.put(nums[i],i);
}
return arr;
}
//把数组中的元素按照指定规则组成一个字符串
public static String arrayToString(int[] arr) {
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
sb.append(arr[i]);
} else {
sb.append(arr[i]).append(",");
}
}
sb.append("]");
String s = sb.toString();
return s;
}
}
希望本文对大家有帮助,上文若有不妥之处,欢迎指正
分享决定高度,学习拉开差距



