Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. package com.hrishikesh.practices.array;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. import java.util.Objects;
  7.  
  8. import static com.hrishikesh.practices.array.ArrayRanges.getRange;
  9.  
  10. /**
  11. * Problem:
  12. * Array Ranges
  13. * Given a sorted integer array without duplicates, return the summary of its ranges.
  14. * For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"]
  15. *
  16. * @author hrishikesh.mishra
  17. */
  18. public class ArrayRanges {
  19.  
  20. public static List<String> getRange(int[] array) {
  21. List<String> ranges = new ArrayList<>();
  22.  
  23. for (int i = 0; i < array.length; ) {
  24. i = findRange(array, i, ranges);
  25. }
  26.  
  27. return ranges;
  28. }
  29.  
  30. private static int findRange(int[] array, int i, List<String> ranges) {
  31. int start = array[i];
  32. Integer end = null;
  33. int temp = start;
  34. int j = i + 1;
  35. while (j < array.length && temp + 1 == array[j]) {
  36. temp = end = array[j];
  37. j++;
  38. }
  39.  
  40.  
  41. if (Objects.isNull(end)) {
  42. ranges.add(String.valueOf(start));
  43. } else {
  44. ranges.add(start + "->" + end);
  45. }
  46.  
  47. return j;
  48.  
  49. }
  50. }
  51.  
  52.  
  53. class ArrayRangesTest {
  54. public static void main(String[] args) {
  55. int[] array = {0, 1, 2, 4, 5, 7};
  56. System.out.println("Array: " + Arrays.toString(array));
  57. System.out.println("Range: " + getRange(array));
  58. }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement