1_两数之和
【问题描述】
给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出和为目标值 target
的那两个整数,并返回它们的数组下标。
示例:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
解:
【算法设计思想】
此题为简单难度的题目,主要考察对于数组(顺序表)这种数据结构的操作。最为简单的办法就是我们利用“双指针”的思想,进行遍历即可,关键是内存的分配和释放问题以及C语言中数组的指针的关系!
【算法描述】
C语言:
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
for(int i = 0; i<numsSize-1; ++i){
for(int j = i+1; j<numsSize; ++j){
if(nums[i]+nums[j] == target)
{
int *res=(int*)malloc(sizeof(int)*2);
res[0] = i;
res[1] = j;
*returnSize = 2;
return res;
}
}
}
*returnSize = 0;
return NULL;
}
Python:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)):
for j in range(i + 1 , len(nums)):
if(nums[i]+nums[j] == target):
return [i,j]
return None
C++:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> res = vector<int>(2);
for (int i = 0; i < nums.size(); i++) {
for (int j = i + 1; j < nums.size(); j++) {
if (nums[i] + nums[j] == target) {
res[0] = i;
res[1] = j;
return res;
}
}
}
return res;
}
};
Java:
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] res = new int[2];
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] == target) {
res[0] = i;
res[1] = j;
return res;
}
}
}
return res;
}
}
标签:return,target,nums,int,res,++,两数
From: https://www.cnblogs.com/zeta186012/p/18350394