题目描述

题目描述

image.png

思路

  • 官方的思路比我的简单多了,双指针实现

image.png

  1. public List<String> summaryRanges(int[] nums) {
  2. List<String> ret = new ArrayList<>();
  3. for (int i = 0; i < nums.length; ) {
  4. // 范围头部指针
  5. int low = i;
  6. i++;
  7. while (i < nums.length && nums[i] == nums[i - 1] + 1) {
  8. i++;
  9. }
  10. // 范围尾部指针
  11. int high = i - 1;
  12. ret.add(addRet(nums[low], nums[high], low, high));
  13. }
  14. return ret;
  15. }
  16. /**
  17. * 获取本次遍历结果
  18. *
  19. * @param lowNum 左区间对应的数
  20. * @param highNum 右区间对应的数
  21. * @param low 左区间
  22. * @param high 右区间
  23. * @return 执行结果
  24. */
  25. private String addRet(int lowNum, int highNum, int low, int high) {
  26. StringBuilder temp = new StringBuilder(Integer.toString(lowNum));
  27. if (low < high) {
  28. temp.append("->");
  29. temp.append(highNum);
  30. }
  31. return temp.toString();
  32. }