欢迎光临散文网 会员登陆 & 注册

leetcode算法刷题——两数之和

2022-01-15 23:49 作者:komira  | 我要投稿

难度系数:简单

题目描述:

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现

你可以按任意顺序返回答案。


示例:

输入:nums = [2,7,11,15], target = 9

输出:[0,1]


方法一 (普通):

时间复杂度:O(n^2)

解题思路:

在数组nums中,找两个数和为target,并返回索引位置,首先遍历数组,取数组中每一个数a,接着再在当前数a后面一个数开始遍历到末尾,取数b,每次判定a+b是否等于target,若等于,则返回这两个数的索引,否则则继续重复这个过程。

代码实现(C++):


方法二(更快):

时间复杂度:O(n)

解题思路:

首先定义一个结构体,结构体由一个整型数count和一个整型数index组成,利用桶排序的思想,定义该结构体数组,将其作为桶,长度为数组nums中最大减去最小加一,遍历nums数组,将每一项减去最小值,将其作为索引修改对应结构体中的那一项,将其count加1,index记录为当前nums数组的索引位置,最后遍历结构体数组,将target减去每一项索引所对应的nums数组值,在结构体数组中去找该值是否存在,若存在,则记录下两数的索引。

代码实现(C++):


最后,如果有更好的方法或者有一些建议,请在评论区多多留言,感谢观看~~。

leetcode算法刷题——两数之和的评论 (共 条)

分享到微博请遵守国家法律