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

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/

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *