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.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

求数组中两值和为target的两下标,并将两下标保存于数组并返回。

解题:

1)使用两层循环,第一层循环从下标为0开始查找,第二层循环从第一层下标加一开始查找。逐一开始匹配,直到匹配成功,否则返回NULL。

2)定义存放两匹配下标的数组使用static静态标示,使其全局有效,不至于在twoSum函数作用域结束后,导致局部变量失效,返回无效值。

3)定义数组长度为3,是在数组结尾定义结束标示'\0'。使数组正常结束。

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target) {
    int szyu_cnt   = 0;
    int szyu_index = 0;
    static int dst[3] = {0};
    for ( szyu_cnt = 0; szyu_cnt < numsSize; szyu_cnt++ )
    {   
        for ( szyu_index = szyu_cnt + 1; szyu_index < numsSize; szyu_index++ )
        {   
            if ( *(nums + szyu_cnt) + *(nums + szyu_index) == target )
            {   
                dst[0] = szyu_cnt;
                dst[1] = szyu_index;
                dst[2] = '\0';
                return dst;
            }   
        }   
    }   
    return NULL;
}