1.Tow Sum [easy]
Description
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
Solution
此题是在给定数组中找到两个数使其和为target,返回这个数的坐标;
这个题目主要有两个注意的点:
- 数组中的数不能重复使用
- 题目中假定只含有一组解,那我们只需返回拿到的第一满足题目要求的即可
本题采用C语言。
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target) {
int* result = (int)malloc(2);
int flag = 0;
for (int i = 0; i < numsSize; i++) {
for (int j = i+1; j < numsSize; j++) {
if (nums[i]+nums[j] == target) {
result[0] = i;
result[1] = j;
flag = 1;
break;
}
}
if (flag == 1) break;
}
return result;
}
Discussion
本题较为简单我所采用的就是最基本方法,其时间复杂度为O(
n2
);
通过研究leetcode所给出的answer,通过使用Hash Table 可以将时间复杂度降为O(n);