「这是我参与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,刷算法,冲大厂,加油。
成功不难,就在于你是否会比别人更会吃苦。