Java da Üç Sayının Toplamının Bir Sayıya Yakınlığı

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

Verilmiş olan S sayı dizisi ve N sayısı için, dizideki herhangi üç sayının  N sayısına en yakın olan toplamı bulan algoritma.

public int threeSumClosest(int[] nums, int target) {
    int min = Integer.MAX_VALUE;
	int result = 0;
 
	Arrays.sort(nums);
 
	for (int i = 0; i < nums.length; i++) {
		int j = i + 1;
		int k = nums.length - 1;
		while (j < k) {
			int sum = nums[i] + nums[j] + nums[k];
			int diff = Math.abs(sum - target);
 
			if(diff == 0) return sum;
 
			if (diff < min) {
				min = diff;
				result = sum;
			}
			if (sum <= target) {
				j++;
			} else {
				k--;
			}
		}
	}
 
	return result;
}

Algoritma Karmaşıklılığı O(n^2).

Kaynak : https://www.programcreek.com/2013/02/leetcode-3sum-closest-java/