leetcode每日一题(2021.5.4)

题目:两数之和(简单)

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

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

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

例:

输入:nums = [3,2,4], target = 6

输出:[1,2]

 

解答过程:

每种输入只会对应一个答案,所以数组中只有唯一的两个数之和等于目标值。

  想法一:直接暴力求解

    数组中各个元素两两相加,结果等于目标值时终止循环,输出下标。

    代码:

      

  想法二:对代码进行优化,空间换时间

    暴力求解方法实际上对数组进行了n*n次遍历,如果要对代码进行优化就需要减少遍历次数

     在遍历数组的同时,让目标值与数组中元素相减,这个相减的差值如果在hash表中可以找到,就说明已近找到了题目要求的两个数,返回下标即可

    则hash表中要存储的键值对为,key=数组中的元素值,value=该元素对应的下标。

    代码为:

    

 

posted @ 2021-05-04 21:15  瑜琦  阅读(109)  评论(0)    收藏  举报