日拱一卒,月进一步(1)

简介: 思路2:哈希表(暂时还没有学,所以先开个坑位,以后来填补)

1. 两数之和 - 力扣(LeetCode)

to be honest,由于本人的菜菜又菜菜,看到这题是基本没有思路的,也在最近的测试中比较受挫。但是,有句话说得好:做一件事最重要的就是先从差劲开始。不能沉溺于开头的失败,而是要获取正反馈(从一点一滴开始)。


所以我们从这样一道比较简单的题目获取经验。


思路1:暴力求解


比较容易想到的方法就是:先获取一个x,然后再在数组中寻找target-x。但是要注意的是:由于每一个x之前的元素都已经被匹配过,所以只要寻找x后面的元素即可。


有了思路,我们如何完成完整的代码呢?从出思路,到完成代码,这也是一个重要且艰难的环节。


完成这个代码之前,我们先对其进行时间复杂度和空间复杂度的分析。


这段代码使用了两个嵌套的for循环来查找两个数的和是否等于目标值。外层循环从0遍历到numsSize-1,内层循环从0遍历到i-1。对于每个外层循环的迭代,内层循环最多执行i次。因此,总的时间复杂度是:

1 + 2 + 3 + ... + (numsSize - 1)

这是一个等差数列的和,其和为

(numsSize * (numsSize - 1)) / 2

所以,时间复杂度是O(numsSize^2)。

空间复杂度分析:

在空间复杂度方面,如果函数找到了两个数的和等于目标值,它会使用malloc分配一个大小为2的整数数组来存储这两个数的索引,并返回这个数组。如果没有找到这样的两个数,函数返回NULL。这意味着除了可能的返回值(一个大小为2的数组)之外,函数没有使用任何与输入大小numsSize成比例的额外空间。因此,空间复杂度是O(1),不考虑动态分配的内存。

int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
    for(int i=0;i<numsSize;i++)//先确定第一个元素
    {
        for(int j=0;j<i;j++)//元素j在元素i后面查找
        {
            if(nums[i]+nums[j]==target)
            {
                int* ret=malloc(sizeof(int)*2);
                //如果找到这两个元素,那么开辟两个数组空间来存放这两个数字
                //因为要返回这两个数组的下标,所以我们开辟的新数组来储存这两个下标的位置
                ret[0]=i,ret[1]=j;
                *returnSize=2;
                return ret;
            }
        }
    }
    *returnSize=0;
    return NULL;
 
}

思路2:

哈希表(暂时还没有学,所以先开个坑位,以后来填补)

相关文章
|
负载均衡 算法 数据库连接
Go语言性能优化实践:案例分析与解决方案
【2月更文挑战第18天】本文将通过具体的案例分析,探讨Go语言性能优化的实践方法和解决方案。我们将分析几个典型的性能瓶颈问题,并详细介绍如何通过优化代码、调整并发模型、改进内存管理等方式来提升程序的性能。通过本文的学习,读者将能够掌握一些实用的Go语言性能优化技巧,为实际项目开发中的性能优化工作提供指导。
|
SQL 关系型数据库 数据库
Tortoise ORM入门之理论篇
Tortoise ORM入门之理论篇
1636 0
Tortoise ORM入门之理论篇
|
Go
Go语言浮点数完全手册 float32和float64一文掌握!
Go语言浮点数完全手册 float32和float64一文掌握!
3073 0
FEC1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
FEC1 Waiting for PHY auto negotiation to complete......... TIMEOUT !
529 0
|
机器学习/深度学习 缓存 并行计算
NVIDIA Tesla GPU系列P4、T4、P40以及V100参数性能对比
NVIDIA Tesla系列GPU适用于高性能计算(HPC)、深度学习等超大规模数据计算,Tesla系列GPU能够处理解析PB级的数据,速度比使用传统CPU快几个数量级,NVIDIA Tesla GPU系列P4、T4、P40以及V100是Tesla GPU系列的明星产品,云服务器吧分享NVIDIA.
83258 1
单片机课程设计——PWM电机调速
单片机课程设计——PWM电机调速
115 0
|
缓存 NoSQL Java
Spring Boot中的高并发处理
Spring Boot中的高并发处理
|
机器学习/深度学习 人工智能 物联网
快速玩转 Llama2 机器学习 PAI 最佳实践(一)低代码 Lora 微调及部署
采用阿里云机器学习平台PAI-快速开始模块针对 Llama-2-7b-chat 进行开发。PAI-快速开始支持基于开源模型的低代码训练、布署和推理全流程,适合想要快速开箱体验预训练模型的开发者。
69249 59
复现sci顶刊中的画中画(局部细节放大)
复现sci顶刊中的画中画(局部细节放大)
1284 0