checking if 2 numbers of array add up to I

后端 未结 15 2627
日久生厌
日久生厌 2020-12-15 01:13

I saw a interview question as follows: Give an unsorted array of integers A and and an integer I, find out if any two members of A add up to I.

any clues?

ti

15条回答
  •  伪装坚强ぢ
    2020-12-15 02:00

    Insert the elements into hashtable.

    While inserting x, check if I-x already exists. O(n) expected time.

    Otherwise, sort the array ascending (from index 0 to n-1). Have two pointers, one at max and one at min (call them M and m respectively).

    If a[M] + a[m] > I then M-- 
    If a[M] + a[m] < I then m++
    If a[M] + a[m] == I you have found it
    If m > M, no such numbers exist.
    

提交回复
热议问题