LeetCode_01两数之和

2023-10-29

记录LeefCode历程

题目:两数之和

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

假设每个输入只对应一种答案,且相同元素不能被重复利用。

try1

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

报错:

Line 13: control reaches end of non-void function [-Werror=return-type]

分析:程序在运行过程中可能会造成没有进入if语句的情况,从而没有return语句,造成函数没有返回值。

try2

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

执行用时:4ms

如何理解 int *a = (int*)malloc(2*sizeof(int)); 这行代码?

要理解这行代码,我们要先理解等号右边(int*)malloc(2*sizeof(int))这部分,要理解等号右边这部分,就要先理解malloc函数。

malloc 

1.全称memory allocation,中文名是动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址。

2.void* 类型表示未确定类型的指针。C,C++规定,void* 类型可以通过类型转换强制转换为任何其它类型的指针。

这样就清晰了,我们用 sizeof() 函数计算出当下环境中的 int 长度,然后乘以2,我们要这么大的地方,用 malloc 函数进行分配这么大的地方,该函数返回一个 void* 类型的指针,而我们的函数要的是 int* 类型的指针,所以要强制转换为 int* 类型的指针,并用 a 标记它,不然以后去哪里找这块地方。一般而言, malloc() 函数是要配合 free() 函数使用的,考虑注释中解释这里不做考虑。


该题可以延伸:

如果输入不止一个答案呢?

使用哈希表如何处理?

 

 

 

 

 

 

 

 

 

 

 

 

 

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

LeetCode_01两数之和 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • Java8 Stream 分组求和使用笔记

    Java8 Stream 分组求和使用笔记 话不多说 直接贴代码 分组使用 class Foo private int code private int count public Foo int code int count this co
  • APS系列:二

    距上篇居然快一年了 汗 阶段总结真的不能停 否则过阵子就彻底淡忘了 年纪渐长 记性也指数下降 话说APS这个话题我已脱手半年多 懒是病 得治 APS在工业界 特别是制造行业是非常重要和核心的 可惜在学术界并不是研究热点 除了少数几个贼贵的行
  • jQuery 入门教程(32): jQuery UI Datepicker 示例(五)

    设置可以选择的日期范围 有时希望用户在给定的日期内选择 比如预约会议的时间 只能在当天开始的一个月带10天以内 这时可以通过配置minDate和maxDate 来设置 如果minDate或maxDate 没有配置 表示没有最小日期或最大日期
  • C语言最佳实践(B站学习)更新

    接口设计模式 为独立的网络请求模块设计的接口 select接口 不如epoll好 epoll 解决了select问题 将一个多个监听描述符的行为再抽象为一个文件描述符的监听 包括指针一起封装起来 浏览器的 从网络获取数据功能运行独立的网络进
  • Stable Diffusion控制人物脸部和手的方法

    目前Stable Diffusion在人体姿态控制方面已经取得了比较稳定的效果 但是在人脸和手部姿势的控制上还没有很好的解决 经常会出现崩手和崩脸的情况 01 After Detailer解决崩脸的问题 After Detailer是sd的
  • 梳理mavan使用流程,利用IDEA使用maven引入servlet包

    maven的引入 传统方式引入包 缺点 1 程序员自己手动导入包 2 自己解决版本冲突问题 3 自己解决相互依赖问题 4 自己解决包之间的冲突问题 因为包的导入的缺点 设计出更好 更简单的辅助管理程序 maven 大概的流程 利用IDEA使
  • ctfshow(web入门1-28)

    CTF SHOW 信息搜集 参考 https blog csdn net a597934448 article details 105431367 web1 右键查看源码得到flag web2 无法右键和F12查看源码 复制view sou
  • -bash: mysql: command not found

    问题描述 原因描述 系统默认会查找 usr bin下的命令 如果这个命令不在这个目录下 当然会找不到命令 我们需要做的就是映射一个链接到 usr bin目录下 相当于建立一个链接文件 解决方法 首先得知道mysql命令或mysqladmin
  • Struts2+MyBatis3.1.0+Spring3.1.0 整合之道一:数据映射器整合

    第一步 导入相应的jar包 第二步 Web xml文件中整合Struts2和Spring3 1 0
  • 表达式求值-递归

    表达式由项组成 项由因子组成 include
  • Sql Server Profiler Sql 事件探查器 使用方法

    如何进入事件探查器 开始 程序 SQL Server 2008 R2 Sql Server Profiler 点击打开可视窗口 点击新建事件跟踪 输入数据库用户名和密码 事件探查器重要列名解释 CPU 事件所使用的 CPU 时间总计 以毫秒
  • 微信小程序 本地资源图片无法通过 WXSS 获取,可以使用网络图片,或者 base64,或者使用image标签。

    微信小程序不能使用background image问题解决 报错信息 pages index index wxss 中的本地资源图片无法通过 WXSS 获取 可以使用网络图片 或者 base64 或者使用
  • 从零开始搭建vue项目 (晋级篇) npm run dev npm run build

    目录 一 前言 1 目标 2 搭建思路 3 环境准备 二 基础知识 1 包配置安装 npm install 2 运行项目 npm run dev 2 1 执行npm run dev 2 2 调用入口文件 webpack dev conf j
  • idea插件之Smart Tomcat

    IDEA中Smart Tomcat的部署和配置 由于idea版本原因需要自己安装Tomcat插件 但只有Smart Tomcat 并且与之前Tomcat的部署差别有点大 折腾了三个小时终于完成 分享下踩过的坑 社区版 1 安装smart t
  • Java——基础语法(二)

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 React从入门到精通 前端炫酷代码分享 从0到英雄 vue成神之路 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架
  • iexplore.exe命令行参数解释

    打开C Program Files Internet Explorer文件夹 右击iexplore exe文件 选择 发送到 桌面快捷方式 再右击桌面上新建的快捷方式 选择 属性 即可在目标输入框后面添加参数 要注意的是 程序名和参数之间要
  • 【Elasticsearch学习笔记-基础篇2】Elasticsearch倒排索引、分析及打分

    前言 Elasticsearch学习笔记 基础篇1 Elasticsearch介绍及设计概念 在之前的一篇文章中 简单介绍了 es 的设计和相关概念 这一篇来介绍一下 es 中实操方面相关概念的引申 在索引和搜索文档的时候 es 是怎么做的
  • QT6中不再支持使用的类和方法,兼容但不可用

    以下为QT6版本不支持的C 类 首字母标签不带Q D QDiffuseMapMaterial Qt3DExtras QDiffuseSpecularMapMaterial Qt3DExtras G QGraphicsItemAnimatio
  • Java中lombok @Builder注解使用详解

    简介 Lombok大家都知道 在使用POJO过程中 它给我们带来了很多便利 省下大量写get set方法 构造器 equal toString方法的时间 除此之外 通过 Builder注解 lombok还可以方便的时间建造者模式 只需要定义
  • LeetCode_01两数之和

    记录LeefCode历程 题目 两数之和 给定一个整数数组和一个目标值 找出数组中和为目标值的两个数 假设每个输入只对应一种答案 且相同元素不能被重复利用 try1 Note The returned array must be mallo