Java da Bir Sayının Dizideki İki Sayının Toplamı İle Bulunması

Posted by dogukanhan on August 31, 2017 · 1 min read

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/