美文网首页
无序和有序数组中和为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的元素

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

  • 数据结构算法之插入排序

    基本思想:我理解的是把一个需要排序的元素数组视为有序数组和无序数组,把无序的元素挨个和有序的元素比较,然后插入的到...

  • 排序_选择排序之简单选择排序(直接选择排序)

    基本思想 数组分成有序区和无序区,初始时整个数组都是无序区,然后每次从无序区选一个最小的元素直接放到有序区的最后,...

  • Java实现插入排序

    插入排序基本原理 将待排序列表看成有序和无序的两部分,初始为有长度为1的有序数组和其后的无序数组。之后从无序数组中...

  • 插入排序之直接插入

    原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素...

  • 算法入门(2)插入排序

    插入排序:就是把一个无序数组按照从小到大或者从大到小排序为有序数组。1.首先将无序数组中的第一个元素设为有序数组的...

  • 数组---2. 有序数组中和为s的两个数(167 Two Sum

    57 有序数组中和为s的两个数 题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好...

  • 算法入门-排序算法-插入排序-详解

    一、核心思想 首先:把要排序的数组看作两部分:有序部分和无序部分初始情况:有序数组只有一个元素即第一个元素主要操作...

  • 算法 | 冒泡排序

    【算法思想】 以升序为例: (1)初始状态,有序区包含0个元素,无序区包含所有元素 (2)从无序区的末端(远离有序...

  • TS数据结构与算法之查找数组中和为目标值的两个元素

    给一个有序数组,找出其中和为 n 的两个元素 需求 有一个递增的数组[1,2,4,7,11,15]和一个 n = ...

网友评论

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

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