Verilmiş sıralı bir dizi ve girilen bir değer için eğer değer dizide varsa dizideki yerini eğer dizide yoksa dizide eklenebileceği yeri döndüren algoritma.(Not: Dizide aynı elemandan sadece bir tane olduğu varsayılacaktır.)
Algoritma için bir kaç örnek
[1,3,5,6], 5 -> 2
[1,3,5,6], 2 -> 1
[1,3,5,6], 7 -> 4
[1,3,5,6], 0 -> 0
Bu aslında binary search problemidir ve algoritma karmaşıklılığı O(log(n)) dir.
public int searchInsert(int[] nums, int target) { if(nums==null) return -1; if(target>nums[nums.length-1]){ return nums.length; } int i=0; int j=nums.length; while(i<j){ int m=(i+j)/2; if(target>nums[m]){ i=m+1; }else{ j=m; } } return j; }
Kaynak: https://www.programcreek.com/2013/01/leetcode-search-insert-position/