LeetCode每日一题——两数之和

两数之和OJ链接:1. 两数之和 - 力扣(LeetCode)

题目:

思路:

在读懂题目后很多人觉得这种题目很简单,但是不管怎么写,在VS等其他编译器上能跑成功,但是在LeetCode上就是没办法通过。其实这并不是你的代码出错了,而是没有遵守OJ平台规定而造成的。

切记!切记!切记!一定要学会看注释!!!

很多人就是因为不看注释导致程序总是会编译错误!!!
因为注释都是英文所以需要大家有点英文功底!如果大家以后工作了看的很多文件都是英文的!!!所以学好英语很重要!!!
注释的意思是返回的数组需要malloc申请空间,假设调用者会调用free。
所以需要申请一个新的空间来存放数组!!!

理解了注释,同样理解函数的参数也很重要!!!

int*nums 依据题意可以知道是传数组,而int numsSize中文翻译就是数组的大小,int target依据题目和翻译可知是我们的目标值,最后的int*returnSize根据翻译可知是返回数组的大小(有一说一这个参数纯属没用,容易误导)。
既然没有学过哈希表等高级算法,我们就可以用最简单的枚举暴力解法进行解题。
解题思路:
题目要求在数组里找到两个数之和等于目标数,那么我们可以写一个双层循环,从下标位0的元素开始一次与数组中的每一位数相加,找到元素后,开辟一个新的数组,将对应的下标放到数组内,最后再返回我们的数组。
代码实现:
cpp 复制代码
int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{
    for(int i=0;i<numsSize-1;i++)                     
    {
        for(int j=i+1;j<numsSize;j++)              
        {
            if(nums[i]+nums[j]==target)//判断两元素相加是否为整数目标值target
            {
                int *a=(int*)malloc(sizeof(int)*2); //按照提示申请动态数组
                a[0]=i;//将得到的元素下标传入数组
                a[1]=j;
                *returnSize=2;//因为题目要求是两个数组下标,所以返回的数组大小为2
                return a;//返回数组
            }
        }
    }
    return 0;
}
复杂度分析
时间复杂度:O(n²),双重for循环
空间复杂度:O(1),申请而外空间大小为常数
PS:OJ题是不用写主函数的噢,大家不要纳闷为啥没有主函数,因为主函数在人家LeetCode服务
器里!!!
PS:看到这里了,码字不易,给个一键三连鼓励一下吧!有不足或者错误之处欢迎在评论区指出!
相关推荐
圣保罗的大教堂4 分钟前
leetcode 1406. 石子游戏 III 困难
leetcode
晊晌_h1 小时前
嵌入式从0到精通——数据结构总结[特殊字符]
数据结构·算法·排序算法
xiaobobo33301 小时前
c语言中for循环条件中定义临时栈变量的作用域
c语言·for循环条件定义栈变量·大括号作用域·独立栈变量
我找到地球的支点啦2 小时前
Matlab系列(009) 一CRC循环冗余校验详解
开发语言·数据结构·算法·matlab·信息与通信
罗西的思考2 小时前
【OpenClaw具身硬件】ZeroClaw 源码阅读笔记(3)--- RAG
人工智能·算法·机器学习
惜离殇2 小时前
从零开始的敲代码生活--Linux应用软件(文件操作基础1)
linux·c语言·文件操作·标准io
浪里镖客3 小时前
位姿转换矩阵写法-个人习惯(计算机理解其实是相反的)
线性代数·算法·矩阵
潘潘的嵌入式日记3 小时前
I²C 从机接收总被覆盖?双缓冲要在 STOP 时交接
c语言·开发语言·单片机
xx~t5 小时前
嵌入式——Linux软件编程——网络1
linux·c语言·网络·vscode·网络协议
小白羊丨6 小时前
如何诊断 Prompt 模板导致的效果下降?
人工智能·算法·prompt