在刷题之前,折腾好了第一个github项目,学会了上传以前的一个代码。
https://github.com/sensegirl/HUAWEI2019codecraft
用github desktop桌面版传还是遇到了些问题,用下面的方法上传成功。
附知乎链接:https://zhuanlan.zhihu.com/p/34625448
Two Sum II - Input array is sorted
Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.
Note:
Your returned answers (both index1 and index2) are not zero-based.
You may assume that each input would have exactly one solution and you may not use the same element twice.
Example:
Input: numbers = [2,7,11,15], target = 9
Output: [1,2]
Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
C语言
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) {
int i, j, temp_sum;
i = 0;
j = numbersSize-1;
while (1) {
temp_sum = numbers[i] + numbers[j];
if (temp_sum == target)
break;
if (temp_sum < target)
i++;
else
j--;
}
*returnSize = 2;
int * result = (int *) malloc(sizeof(int) * 2);
if (result != NULL){
result[0] = i+1;
result[1] = j+1;
}
return result;
}
Success
Details
Runtime: 4 ms, faster than 92.91% of C online submissions for Two Sum II - Input array is sorted.
Memory Usage: 7.6 MB, less than 57.89% of C online submissions for Two Sum II - Input array is sorted.
python3
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
i = 0
j = len(numbers)-1
while i<j:
if numbers[i] + numbers[j] == target:
return [i+1,j+1]
elif numbers[i] + numbers[j] > target:
j-= 1
else:
i += 1
return []
Success
Details
Runtime: 44 ms, faster than 48.89% of Python3 online submissions for Two Sum II - Input array is sorted.
Memory Usage: 13.6 MB, less than 5.14% of Python3 online submissions for Two Sum II - Input array is sorted.