美文网首页
无序和有序数组中和为S的元素

无序和有序数组中和为S的元素

作者: 轻菊不爱柠檬 | 来源:发表于2019-09-29 18:10 被阅读0次

    其实最近我又想到一个方法,可以进行先对无序排序再进行,但是排序算法也是需要合适时间复杂度的~ 所以也不是完美的方法

    1.数组为无序的情况,存在两种方法

    方法一:双重循环,类比输出矩阵的下三角,时间复杂度O(n^2 )

    代码:

    方法二:借助hashMap

    把数组中的元素和及下标存入hashmap,遍历hashMap时间复杂度O(n),查找时间复杂度O(1),那么总的时间复杂度O(n).

    思路:把数组中的元素和及下标存入hashmap<元素,下标>,遍历该hashMap,对于每一个键值对,subValue=target-entry,寻找subValue是否在hashMap中,存在就为找到

    2.数组为有序的情况,使用双指针,左右一起遍历。

    数列满足有序,设置头尾两个指针i和j,初始分别指向头和尾

    (1)当nums[i]+nums[j]==target,正好满足,返回即可

    (2)当nums[i]+nums[j]<target时,说明nums[i]肯定不是那个满足的数,那么就 i++

    (3)当nums[i]+nums[j]>target时,说明nums[j]肯定不是那个满足的数,那么就 j++

    代码:

    注意该函数的返回值是int[],所以最后新声明一个int[]数组,把该数组初始化为nums[i]和nums[j],返回即可。

    相关文章

      网友评论

          本文标题:无序和有序数组中和为S的元素

          本文链接:https://www.haomeiwen.com/subject/wayxpctx.html