C语言刷力扣——两数之和

482 阅读2分钟

「这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战」。

前言

一个程序,有一种书本上的描述:解决一个问题除了要有一个数据结构来表示和组织信息外,还需要一系列步骤来完成问题的解决方案。

当然了,第一个逗号前面的那当然就是数据结构了,那后面的一系列步骤其实说的就是算法。

也可以称为:操作数据结构的方法;或者称为:解决问题的方案

我学算法的目的

因为我想在找工作的时候更有竞争力,更有话语权,所以我来学算法!

一、题目描述

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

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

你可以按任意顺序返回答案。 难度:简单

二、题目解析

给了一个整数数组,和一个整数,让求数组中和为整数的两个郑虎,返回下标

思路1:遍历两次数组,令数组元素相加

  • 遍历一次数组
  • 再遍历一次数组
  • 判断两个元素是否与目标值相同
    • 若相同,将这两个下标添加进数组,然后返回
  • 返回空数组

三、代码:

思路1:

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    int* ans = malloc(sizeof(int) * 2);
    for (int i=0;i<numsSize;i++)
    {
        for (int j=0;j<numsSize;j++)
        {
            if (i!=j && nums[i]+nums[j]==target)
            {
                ans[0] = i;
                ans[1] = j;
                *returnSize = 2;
                return ans;
            }
        }
    }
    *returnSize = 0;
    return ans;
}

结语

算法的出现也是因为有了问题,之前也说过算法是什么了,就是一个问题的解决方案,所以我们的算法是为了解决问题才出现的。

当然,主要还是为了money,刷算法,冲大厂,加油。

成功不难,就在于你是否会比别人更会吃苦。