码迷,mamicode.com
首页 > 其他好文 > 详细

TwoSum

时间:2019-01-12 21:52:54      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:使用   数组初始化   int   strong   局部变量   返回   存在   直接   方法   

记录被LeetCode虐的日子
第一种方法:使用枚举

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target)
{
    int *result = (int*)malloc(2 * sizeof (int));  //申请内存
    int i = 0;
    int j = 0;
    if(sizeof(nums) < 1)  //输入参数有误判断
    {
        return NULL;
    }
    for(i = 0;i <= numsSize-1; i++)
    {
        for(j = 0;j <= numsSize-1;j++)
        {
            if((nums[i] + nums[j] == target) && (j != i) )
            {
                result[0] = i;
                result[1] = j;
                break;
            }
        }
    }
    return result;
}

注意:
1 代码开始,先检查边界值。如果为边界值,直接返回相应结果;如果是指针则检查是否为NULL.是数字的情况,要考虑特殊的数值,如零
2 提示错误:

load of null pointer of type ‘const int‘

在调用函数返回时,返回值如果是一个常量,则没问题。
返回值若为指针,则需注意会出现这个错误。如果返回的指针地址指向函数内的局部变量,在函数退出时,该变量的存储空间会被销毁,此时去访问该地址就会出现这个错误。
解决办法有以下三种:
1)返回的指针使用malloc分配空间
2)将该变量使用static修饰 static修饰的内部变量作用域不变 但是声明周期延长到程序结束 即该变量在函数退出后仍然存在
3)使用全局变量
建议使用malloc分配空间返回
3 指针数组初始化方法
指针数组中的每个元素都是一个指针,如下的array数组中的每个元素都是一个字符串指针,指向一个一维字符串数组。

char **array;
array = (char **)malloc(sizeof(char *) * 100) ; //array包含100个指针元素 为这100个指针变量分配空间
for(int i = 0; i < 100; i++)
array[i] = (char *)malloc(sizeof(char) * 50); // 为array中的每个指针变量进行初始化 上面的表达式只是为指针变量分配了空间 并没有为它们赋值 此语句为每个指针分配了长度为50个字符的空间 并将该空间的初始地址赋值给array中的指针

TwoSum

标签:使用   数组初始化   int   strong   局部变量   返回   存在   直接   方法   

原文地址:https://www.cnblogs.com/Manual-Linux/p/10260962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!