1.两数之和

1.题目描述

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

复制代码
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

2.解题思路

直接用暴力解法,两个循环,但是C语言需要注意一些点

3.代码

objectivec 复制代码
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
    for(int i =0;i<numsSize;i++){
        for(int j=i+1;j<numsSize;j++){
            if(nums[i]+nums[j] ==target){//建立新数组
            int* res = malloc(sizeof(int)*2);
            res[0]=i;
            res[1]=j;
            *returnSize = 2;
            return res;
            }
        }
    }
    *returnSize = 0;
    return NULL;
}

4.代码剖析

int* res = malloc(sizeof(int)*2);

这一句在堆内存中建立了一个大小为2个int类型的空间,不会随着函数运行完后被销毁,其中,res是一个指针变量,存的是地址,具体来说是该数组res的首地址,*res是对该地址解引用,也就是该地址内的数据,同样也是数组第一个数据即res[0] = *res,*(res+0) = res[0],*(res+1) = res[1].

return res;

返回一个指针变量int*,表示返回一个数组的首地址,可以通过该地址对数组内所有的元素进行寻址,即*(res+i) = res[i]

相关推荐
钢琴上的汽车软件1 天前
C 语言中const与指针:三种常见写法辨析
c语言·指针和const
ZK_H1 天前
嵌入式c语言——关键字其6
c语言·开发语言·计算机网络·面试·职场和发展
ambition202421 天前
从暴力搜索到理论最优:一道任务调度问题的完整算法演进历程
c语言·数据结构·c++·算法·贪心算法·深度优先
cmpxr_1 天前
【C】原码和补码以及环形坐标取模算法
c语言·开发语言·算法
yashuk1 天前
C语言实现PAT练习及算法学习笔记,还有SQLite介绍
c语言·sqlite·开源项目·算法学习·pat练习
ACP广源盛139246256731 天前
破局 Type‑C 切换器痛点@ACP#GSV6155+LH3828/GSV2221+LH3828 黄金方案
c语言·开发语言·网络·人工智能·嵌入式硬件·计算机外设·电脑
爱编码的小八嘎1 天前
C语言完美演绎7-10
c语言
hhh3u3u3u1 天前
Visual C++ 6.0中文版安装包下载教程及win11安装教程
java·c语言·开发语言·c++·python·c#·vc-1
泛凡(Linyongui)1 天前
PY32F002B实践之二--宠物腹背理疗仪项目介绍及头文件解析
c语言·keil·py32·32位单片机·腹背理疗仪项目实践
网域小星球1 天前
C 语言从 0 入门(十四)|文件操作:读写文本、保存数据持久化
c语言·开发语言·文件操作·fopen·fprintf