[C题目]力扣1. 两数之和

本文详细讲解了如何使用迭代方法解决LeetCode中的两数之和问题,通过枚举元素组合并利用nums数组作为临时存储,避免了动态内存分配,确保了代码的清晰和内存效率。重点介绍了利用指针改变数组长度的概念,以及如何避免潜在的内存泄漏问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 两数之和 - 力扣(LeetCode)

思路: 枚举所有的元素组合,满足和为target时,将两个元素下标赋值到数组nums的第1和第2个位置,修改数组的长度为2,并且返回数组。

注意:这里虽然用动态申请空间也能通过,但是调函该函数的人可能不知道你动态申请了空间,如果多次调用又不释放,就会导致内存泄漏。题目给出了*returnSize,可以利用数组nums作为"容器"储存两个元素的下标传递出来,而之所以用指针的形式是因为只有通过指针才能改变函数外的数组的长度(变量)。

int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{
    for(int i=0;i<numsSize;i++)//nums[i]和它后面的所有元素一对对组合,看是否和为target。
    {
        for(int j=i+1;j<numsSize;j++)
        {
            if(nums[i]+nums[j]==target)//满足要求就把下标赋值给数组num前两位,数组nums作为传递数据的"容器"。
            {
                nums[0]=i;
                nums[1]=j;
                *returnSize=2;//改变数组的长度,用指针才能改变函数之外的变量。
                return nums;
            }
        }
    }
    return NULL;//找不到答案就返回NULL
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值