链接:
https://leetcode.com/problems/summary-ranges/
大意:
给定一个整数数组nums,要求找出nums中所有满足连续排列的区间数字。例子:
思路:
一次遍历数组,只需要记录一个前一个数字的值以及当前是否在遍历连续的排列。
代码:
class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> res = new ArrayList<>();
if (nums.length == 0)
return res;
boolean continuous = false; // 记录当前是否在遍历连续排列
Integer preNum = null; // 记录前一个数字
String start = ""; // 记录连续排列的起点
for (int num : nums) {
if (preNum != null) {
if (num - preNum == 1) {
continuous = true;
} else {
if (continuous) {
res.add(start + "->" + preNum);
} else {
res.add(start);
}
continuous = false;
start = "" + num;
}
} else {
start += num;
}
preNum = num;
}
if (continuous) {
res.add(start + "->" + preNum);
} else {
res.add(start);
}
return res;
}
}
结果:
结论:
简单题。