Bir integer dizisinde ki iki sayının toplanarak önceden belirtilmiş bir sayıya eşit olup olmayacağını bulan algoritma.
Örnek olarak
Sayı Dizimiz = {2, 7, 11, 15}, hedef=9 olursa algoritmamız bize 0 ve 1’i verecektir.
Bu verilen değerler dizideki iki sayının toplanarak hedef’i oluşturan sayıların dizideki yeridir.
Bu problemi çözmek için kullanılan Java için en iyi yöntemlerden birisi HashMap kullanmaktır.
Dizideki elemanlar döngüye sokulur ve toplama işleminin sayıyı vermesi durumuna karşılık dizideki sayıların yerleri
HashMap’de tutulmaktadır.
public int[] twoSum(int[] nums, int target) { if(nums==null || nums.length<2) return new int[]{0,0}; HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); for(int i=0; i<nums.length; i++){ if(map.containsKey(nums[i])){ return new int[]{map.get(nums[i]), i}; }else{ map.put(target-nums[i], i); } } return new int[]{0,0}; }
Algoritma Karşılıklılığı O(n)
kaynak: https://www.programcreek.com/2012/12/leetcode-solution-of-two-sum-in-java/