leetcode两数之和c/c++

2023-05-16

两数之和c/c++

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

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

题目解答:

暴力法:

c++语言:
版本1:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int i,j;
        for(i=0;i<nums.size()-1;i++)
        {
            for(j=i+1;j<nums.size();j++)
            {
                if(nums[i]+nums[j]==target)
                {
                   return {i,j};
                }
            }
        }
        return {i,j};
    };
};

注:
1.nums.size()获取向量元素个数;

c语言:

int* twoSum(int* nums, int numsSize, int target) {
    int i,j;
    int *result=NULL;
    for(i=0;i<numsSize-1;i++)
    {
        for(j=i+1;j<numsSize;j++)
        {
            if(nums[i]+nums[j]==target)
            {
                 result=(int*)malloc(sizeof(int)*2);
                 result[0]=i;
                 result[1]=j;
                 return result;
            }
        }
    }
    return result;
}

注:
1.malloc是c语言中的动态分配内存,result=(int*)malloc(sizeof(int)*2);malloc函数返回的是void*型,所以要强制类型转换成int,在前面加上(int *),才能给整型赋值,后面(sizeof(int)*2)的意思是分配两个int大小的空间;

总结:该方法简单但是时间复杂度为O(n2),空间复杂度为O(1);运行速度慢且内存空间消耗大

两遍哈希表:

c++语言:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        map<int,int> a;//建立hash表存放数组元素
        vector<int> b(2,-1);//存放结果
        for(int i=0;i<nums.size();i++)
            a.insert(map<int,int>::value_type(nums[i],i));
        for(int i=0;i<nums.size();i++)
        {
            if(a.count(target-nums[i])>0&&(a[target-nums[i]]!=i))
            //判断是否找到目标元素且目标元素不能是本身
            {
                b[0]=i;
                b[1]=a[target-nums[i]];
                break;
            }
        }
        return b;
    };
};

注:
1.该方法用map实现,map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力
map用法详解:C++中的STL中map用法详解
.

一编哈希表

改进:在进行迭代并将元素插入到表中的同时,我们还会回过头来检查表中是否已经存在当前元素所对应的目标元素。如果它存在,那我们已经找到了对应解,并立即将其返回。

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        map<int,int> a;//提供一对一的hash
        vector<int> b(2,-1);//用来承载结果,初始化一个大小为2,值为-1的容器b
        for(int i=0;i<nums.size();i++)
        {
            if(a.count(target-nums[i])>0)
            {
                b[0]=a[target-nums[i]];
                b[1]=i;
                break;
            }
            a[nums[i]]=i;//反过来放入map中,用来获取结果下标
        }
        return b;
    };
};

觉得本文对你有帮助,点个赞噢谢谢

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leetcode两数之和c/c++ 的相关文章

  • selenium 常用API

    Selenium 常用API 之操作浏览器 上文我们讲解了如何打开浏览器 xff0c 本文讲讲解关于操作浏览器的更多API 后退 span class token comment 后退 span driver span class toke
  • JAVA List 获取两个集合的交集 并集 差集

    public class ExtractIdUtils public static Map lt String List lt Long gt gt extractList List lt Long gt newIds List lt Lo

随机推荐

  • 获取用户IP的API

    http span class token punctuation span span class token operator span pv span class token punctuation span sohu span cla
  • 矩阵相乘最优解

    define CRT SECURE NO WARNINGS include lt iostream gt include lt vector gt include lt algorithm gt using namespace std in
  • 前端WebSocket配置

    代码 initWebSocket span class token punctuation span span class token keyword function span span class token punctuation s
  • mybatis-plus自动填充注入器

    过滤器代码 span class token keyword import span org span class token punctuation span apache span class token punctuation spa
  • C++枚举类型

    枚举类型是C 43 43 中一种派生数据类型 xff0c 它是由用户定义的若干枚举常量的几个 定义格式 xff1a enum lt 类型名 gt lt 枚举常量表 gt 举例 xff1a enum color set RED BULE WH
  • springboot后端websocket简单实现上下行数据传输

    配置 span class token keyword package span com span class token punctuation span mlfo span class token punctuation span wm
  • IDEA开发热部署配置

    添加依赖 span class token generics function span class token punctuation lt span dependency span class token punctuation gt
  • java 定时任务ip是否ping的通

    span class token annotation punctuation 64 Scheduled span span class token punctuation span cron span class token operat
  • springboot跨域配置

    span class token keyword public span span class token keyword class span span class token class name SzptbApplication sp
  • SpringCloud Alibaba微服务解决方案

    微服务概念 微服务架构它是基于传统的SOA架构演进而来的一种架构模 其提倡将传统的单体架构或分布式架构中的单体应用程序和服务划分成更小粒度的服务 xff0c 这种服务独立运行在独立的进程中并与其它的进程相隔离 xff0c 服务于服务之间通常
  • 【Linux程序前台后台切换】

    1 前台转后台 按如下步骤即可将前台任务转后台任务 xff1a 暂停当前前台任务 xff1b 按下Ctrl 43 z命令键即可 xff1b 如下图所示 xff1a 停掉当前前台任务 查看挂起的进程 xff1b 输入jobs即可 xff0c
  • linux3.14.38 解决不能正确加载驱动 insmod: can't insert 'xxx.ko':invalid module format

    错误原因总结 及 解决方法 1 原因 xff1a 这是因为 正在运行的板子的内核版本 与 编译驱动的内核版本 不一致造成的 解决方法 xff1a 确保在与开发板运行的相同的内核版本下 xff0c 编译你的驱动程序 xff0c 如果正常情况
  • 如何在Qt项目内添加新的子文件夹

    情景 xff1a 当项目文件过多时 xff0c 将头文件和源文件只用一个文件夹来管理会太长 这时就需要添加新的子文件进行管理 样图 xff1a 这里添加了一个 tool 文件夹存放自己写的工具 xff08 方法 xff09 实现步骤 xff
  • variable has incomplete type 'QVariant'

    Qt 报错误真的很奇怪啊 xff0c 我以为不用包含QVariant头文件就可以直接用 xff0c 在没有包含头文件的情况下使用QVariant 关键字不会报错 xff0c 但是在运行的时候会报错 遇到这个错误的解决办法 xff0c 将QV
  • win10 下 idea2020安装 JetBrains-agent.jar 包后闪退的解决办法

    破解 我们在破解时会将 JetBrains agent jar 这个文件导入到 idea 中 xff0c 我在 plugin 导入后重启便无法再打开 idea 原因 在导入 JetBrains agent jar 包自动修改配置文件时出现了
  • 更改WSL2的存放路径

    问题 xff1a wsl默认存放路径为C盘 xff0c 可根据需求将其导出到其他空间较大的盘符 更改方式 xff1a 查看已安装的WSL的名称和版本 xff0c 在Powershell中输入以下命令 xff1a wsl span class
  • Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing 阅读笔记

    文章目录 背景 弹性分布式数据集 RDDs 如何产生 RDD 用户可以对 RDD 的控制 Spark 提供的编程接口 lineage 图示 RDDs 表示 实现 作业调度 调度思想 阶段 stage 解释器整
  • Dynamic Scheduling with Service Curve for QoS Guarantee of Large-Scale Cloud Storage 论文阅读

    文章目录 摘要 引言 相关工作 背景 基于服务曲线的 QoS 保证 问题公式化 延迟保证所需带宽的保守设置 延迟保证服务曲线 SG QoS 队列服务对应关系 队列工作模式 时间标签计算 分发策略 紧急状态计算
  • Dependable Horizontal Scaling Based On Probabilistic Model Checking 阅读笔记

    一 介绍 本文提出的方法分为 基于马尔科夫决策过程 Markov Decision Processes 构建弹性动作的模型 利用模型制定具体的弹性策略 使用马尔科夫决策过程的原因 MDPs 可以捕捉问题的转移概率和不确定性 在当前状态下 不
  • leetcode两数之和c/c++

    两数之和c c 43 43 题目 xff1a 给定一个整数数组 nums 和一个目标值 target xff0c 请你在该数组中找出和为目标值的那 两个 整数 xff0c 并返回他们的数组下标 你可以假设每种输入只会对应一个答案 但是 xf