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]

相关推荐
努力努力再努力wz4 小时前
【MySQL进阶系列】一文打通事务机制:从锁、Undo Log 到 MVCC 与隔离级别
c语言·数据结构·数据库·c++·mysql·算法·github
薇茗4 小时前
【初阶数据结构】 左右逢源的分支诗律 二叉树1
c语言·数据结构·算法
eDEs OLDE5 小时前
CC++链接数据库(MySQL)超级详细指南
c语言·数据库·c++
广州山泉婚姻5 小时前
C语言三种基本程序结构详解
c语言·开发语言
上弦月-编程5 小时前
【C语言】函数栈帧的创建与销毁(底层原理)
c语言·开发语言
Hhy_11076 小时前
【从零开始学习数据结构 ④】:栈 ——后进先出的艺术
c语言·数据结构·学习·visual studio
爱编码的小八嘎6 小时前
c语言完美演绎9-17
c语言
广州山泉婚姻6 小时前
C++ STL Vector 入门与实战全攻略
c语言·c++
我不是懒洋洋7 小时前
【数据结构】排序算法(直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序)
c语言·数据结构·c++·经验分享·算法·排序算法
辛苦才能7 小时前
数据结构--排序--插入排序(C语言,重点排序面试和比赛都会考察)
c语言·数据结构·面试