两数之和
  4jzk2Z0RyhMg 2023年12月22日 20 0

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
     for(int i=0;i<numSize;++i){
         for(int j=i+1;j<numsSize;++j){
             if(nums[i]+nums[j]==target) {
                 int*ret= malloc(sizeof(int)*2);
                 ret[0]=i,ret[1]=j;
                 *returnSize=2;  //改变数组的长度
                 return ret;
             }
         }
     }
    *returnSize=0;
    return NULL; 
}

知识点总结:

数组的长度(即数组的大小)是在编译时确定的,并且在程序运行期间不能改变。这是因为数组是在上分配内存的,栈上的内存大小是固定的,不能动态地扩展或缩小。如果需要一个可以动态改变大小的数组,可以使用动态内存分配函数(如malloc、calloc或realloc)来创建一个动态数组。动态数组是在堆上分配内存的,堆上的内存大小可以根据需要动态地扩展或缩小。

所以在使用动态内存分配函数时,必须确保正确地释放分配的内存,否则可能会导致内存泄漏。题目通过指针改变函数外的数组的长度(变量)。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月22日 0

暂无评论

推荐阅读
4jzk2Z0RyhMg