刻意练习:LeetCode实战 -- Task01. 两数之和
背景
本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了 三个简单、两个中等、一个困难 等级的题目,共计三十道题,利用三十天的时间完成这组刻意练习。
本次任务的知识点:数组
数组 是在程序设计中,为了处理方便,把具有相同类型的若干元素按有序的形式组织起来的一种形式。抽象地讲,数组即是有限个类型相同的元素的有序序列。若将此序列命名,那么这个名称即为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素。而用于区分数组的各个元素的数字编号则被称为下标,若为此定义一个变量,即为下标变量。
题目
给定一个整数数组 nums
和一个目标值 target
,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例1:
给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1]
示例2:
给定 nums = [230, 863, 916, 585, 981, 404, 316, 785, 88, 12, 70, 435, 384, 778, 887, 755, 740, 337, 86, 92, 325, 422, 815, 650, 920, 125, 277, 336, 221, 847, 168, 23, 677, 61, 400, 136, 874, 363, 394, 199, 863, 997, 794, 587, 124, 321, 212, 957, 764, 173, 314, 422, 927, 783, 930, 282, 306, 506, 44, 926, 691, 568, 68, 730, 933, 737, 531, 180, 414, 751, 28, 546, 60, 371, 493, 370, 527, 387, 43, 541, 13, 457, 328, 227, 652, 365, 430, 803, 59, 858, 538, 427, 583, 368, 375, 173, 809, 896, 370, 789], target = 542因为 nums[28] + nums[45] = 221 + 321 = 542,所以返回 [28, 45]
实现
第一种:暴力匹配算法
- 执行结果:通过
- 执行用时:432 ms, 在所有 C# 提交中击败了 65.82% 的用户
- 内存消耗:30.8 MB, 在所有 C# 提交中击败了 8.67% 的用户
public class Solution {public int[] TwoSum(int[] nums, int target) {int[] result = new int[2];for (int i = 0; i < nums.Length; i++){int find = target - nums[i];for (int j = i + 1; j < nums.Length; j++){if (find == nums[j]){result[0] = i;result[1] = j;return result;}}}return result;}
}
第二种:通过Hash的方式
- 执行结果:通过
- 执行用时:280 ms, 在所有 C# 提交中击败了 96.53% 的用户
- 内存消耗:31.1 MB, 在所有 C# 提交中击败了 6.89% 的用户
public class Solution {public int[] TwoSum(int[] nums, int target) {int[] result = new int[2];Dictionary<int, int> dic = new Dictionary<int, int>();for (int i = 0; i < nums.Length; i++){int find = target - nums[i];if (dic.ContainsKey(find)){result[0] = dic[find];result[1] = i;break;}if (dic.ContainsKey(nums[i]) == false)dic.Add(nums[i], i);}return result; }
}
Python 语言
- 执行结果:通过
- 执行用时:48 ms, 在所有 Python3 提交中击败了 92.55% 的用户
- 内存消耗:14.7 MB, 在所有 Python3 提交中击败了 35.54% 的用户
class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:i = 0dic = dict()result = list()while i < len(nums):find = target - nums[i]j = dic.get(find)if j is not None:result.append(j)result.append(i)breakelse:dic[nums[i]] = ii += 1return result
来源
- https://leetcode-cn.com/problems/two-sum/
往期活动
LSGO软件技术团队会定期开展提升编程技能的刻意练习活动,希望大家能够参与进来一起刻意练习,一起学习进步!
- Python基础刻意练习活动即将开启,你参加吗?
- Task01:变量、运算符与数据类型
- Task02:条件与循环
- Task03:列表与元组
- Task04:字符串与序列
- Task05:函数与Lambda表达式
- Task06:字典与集合
- Task07:文件与文件系统
- Task08:异常处理
- Task09:else 与 with 语句
- Task10:类与对象
- Task11:魔法方法
- Task12:模块
我是 终身学习者“老马”,一个长期践行“结伴式学习”理念的 中年大叔。
我崇尚分享,渴望成长,于2010年创立了“LSGO软件技术团队”,并加入了国内著名的开源组织“Datawhale”,也是“Dre@mtech”、“智能机器人研究中心”和“大数据与哲学社会科学实验室”的一员。
愿我们一起学习,一起进步,相互陪伴,共同成长。
后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码:
刻意练习:LeetCode实战 -- Task01. 两数之和相关推荐
- LeetCode实战:两数之和
题目英文 Given an array of integers, return indices of the two numbers such that they add up to a specif ...
- LeetCode实战:两数相加
题目英文 You are given two non-empty linked lists representing two non-negative integers. The digits are ...
- LeetCode题 - 1 两数之和
LeetCode题 - 1 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案. ...
- LeetCode:1.两数之和
LeetCode:1.两数之和 第一次写题解,也第一次做leetcode,不妥之处还望海涵 一.暴力 //cpp class Solution {public:vector<int> tw ...
- LeetCode实战:三数之和
题目英文 Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? ...
- 【Leetcode | easy】两数之和
题目 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], targ ...
- LeetCode刷题-两数之和(持续更新)
文章目录 LeetCode 1. Two Sum (两数之和) 题目描述 样例 解题思路一(暴力法) 解题思路二(使用map) 前言:最近业余时间,一直在看LeetCode上面的题,上面有许多好的解题 ...
- Leetcode 1:两数之和
写在前面 Leetcode 社区挺神奇的,近几年火热程度不亚于开源社区github.做题一直以来是咱们亚洲人的强项,咋这香馍馍也被美国硅谷抢先了,着实香菇. 企于算法工程师的江湖地位和薪资福利,决定先 ...
- leetcode系列--1.两数之和
leetcode 第1题 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输 ...
最新文章
- 第八章 熟练dom的几个常用方法
- IBM powerVM VIOS
- 【Python】while循环实现用户登录的三次机会
- Linux 灾难恢复 Linux 系统启动故障修复
- php 怎么解析文本,PHP解析自定义纯文本数据库
- MAC 安装 Magento2 community edition 详细步骤
- JN_0005:PS改变图片指定内容颜色
- 数据结构笔记(四)-- 静态链表实现
- 关于Maven的7个问题
- 数据结构(C语言版)
- linux 开根号函数,Linux里隐藏的计算器开根号,问他它的地球未解之谜吗?
- hbase scan超时设置_hbase scan limit 10
- android 置灰不可点击,Android全局实现控件变灰
- 药物研发检测记录模板-0903不溶性微粒检查法检验原始记录
- Unity3D-VR《静夜诗》5-李白吟诗
- ftp匿名登录 漏洞复现
- 全国计算机等级考试监考培训,全国计算机等级考试 (NCRE) 监考培训
- linux shell 字符串长度
- 大学开设大数据专业,都安排了哪些课程?
- 训练孩子思维能力的几种方法