fork download
  1. import java.util.*;
  2.  
  3. public class Main {
  4. public static void main(String[] args) {
  5. int[] arr = {1, 2, 2, 7, 8, 8, 8, 8, 9, 10};
  6. int k = 8;
  7. int firstIndex = findIndex(arr, k, true);
  8. int lastIndex = findIndex(arr, k, false);
  9. System.out.println(firstIndex + " " + lastIndex);
  10. }
  11.  
  12. public static int findIndex(int[] arr, int k, boolean findFirst) {
  13. int left = 0, right = arr.length - 1, result = -1;
  14.  
  15. while (left <= right) {
  16. int mid = left + (right - left) / 2;
  17.  
  18. if (arr[mid] == k) {
  19. result = mid;
  20. if (findFirst) {
  21. right = mid - 1;
  22. } else {
  23. left = mid + 1;
  24. }
  25. } else if (arr[mid] < k) {
  26. left = mid + 1;
  27. } else {
  28. right = mid - 1;
  29. }
  30. }
  31.  
  32. return result;
  33. }
  34. }
  35.  
Success #stdin #stdout 0.13s 55440KB
stdin
Standard input is empty
stdout
4 7