有人相爱,有人夜里看海,有人Leetcode第一题搞不出来~~
这个题目的题意是很容易理解的,就是两个数据的求和等于这个给定的参数,其中两个数据来自于我们的这个数组里面的两个数据,我们需要找到的就是符合条件的数据,返回的是一个数组,这个数组里面的内容就是给定的这个数据对应的下标;
就拿这个里面的第一个案例来说吧,这个是target=9,也就是两个数据的求和等于9,正好这个数组里面的第一个元素和第二个元素的求和结果就是9,因此返回的就是两个数据对应的这个下标即可;
暴力的解法就是我们每一个都需要进行判断,每一个组合的情况都进行考虑,这个时候所有符合的情况都会被找到,返回这个对应的下标,这个里面只需要使用两层的这个for循环就是可以搞定的;
第二个方法就是使用的我们的哈希表的解法,我们从前向后挨个的进行遍历的操作,第一个元素是2,我们去哈希表里面找9=2=7,也就是我们需要7,看看这个7在我们的哈希表里面是不是存在的;
这个哈希表是如何构造出来的呢?就是我们的这个这个元素前面的所有数组组成的,每一个元素判断之后都会被放到这个哈希表里面去;但是因为我们的这个2就是数组里面的第一个元素,所以轮到他的时候这个时候的哈希表里面是没有任何的这个元素的,因此这个时候不需要判断;
轮到7的时候,2因为已经判断过了,所以这个2就会丢进哈希表里面去,也就是7前面的所有元素,这个时候需要的元素就是target-nums[i],去哈希表里面去找这个元素,发现找到了,这个时候返回两个数据的下标就可以了,以此类推,知道找到我们数组里面的最后一个元素为止;
两层的这个for循环就是可以搞定的,第一层确定的事我们目前遍历的这个元素,第二层就是从他的下一个元素开始,一直到我们的数组里面的最后一个元素才停止;
nums[i]+nums[j]如果两个的和就是我们的目标值,这个时候返回对应的这个下标就可以了;
这个时候哈希表里面的两个元素:第一个是我们的具体的数字,第二个就是我们的这个数值对应的当前的下标,x求得就是我们需要的元素,if判断我们的哈希表里面是不是存在我们想要的这个元素,这个时候找到的话返回的就是我们的i和这个哈希表里面的元素对应的下标;
没找到put就是把这个元素放到这个哈希表里面去,继续去找下一个元素即可,开始新一轮的这个操作;
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。