链接:
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;
}
}
结果:

结论:
简单题。
本文解析了LeetCode上的一道经典题目——总结范围。通过一次遍历数组的方法,高效地找出了数组中所有连续排列的区间数字。文章详细介绍了算法的思路与实现过程,并附上了完整的代码示例。
370

被折叠的 条评论
为什么被折叠?



