LeetCode228——Summary Ranges
来源:互联网 发布:网络舆情周期 编辑:程序博客网 时间:2024/06/08 08:07
leetcode刷题日记——Summary Ranges
1.题目内容:
Given a sorted integer array without duplicates, return the summary of its ranges.
For example, given
[0,1,2,4,5,7]
, return ["0->2","4->5","7"].
2.题目理解
题目主要意思就是给定一个已经排序好了并且没有重复的数组,通过扫描这个数组,给出这个数组元素范围总结概括。在一组两两之间差距为1的一组元素中,范围为开始那个数组到最后那个数字。例如:0,1,2,3,4,5 它的范围就是0->5,;如果某个数字与前后的数字差值都大于1,则它的范围就是它本身;例如for example中的7。
3.思路
首先,默认第一个范围的开始元素(start)和结尾元素(end)就是数组的第0个元素。然后逐个与后面的元素比较,一旦某个元素与前面的元素差值大于1,就产生从把从start到end形成一个新的返回。
4.实现代码:
import java.util.ArrayList;import java.util.List;public class CopyOfSummaryRanges {public static void main(String[] args) {CopyOfSummaryRanges summary = new CopyOfSummaryRanges();int[] nums = { 0, 1, 2, 4, 5, 7, 9 };List<String> list = summary.summaryRanges(nums);for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}}public List<String> summaryRanges(int[] nums) {if (nums == null) {return null;}if (nums.length <= 0) {return new ArrayList<String>();}List<String> list = new ArrayList<String>();if (nums.length == 1) {list.add(nums[nums.length - 1] + "");return list;}// 正常情况下的业务逻辑int start = nums[0], end = nums[0];for (int i = 1; i < nums.length; i++) {//如果两个数相连 就将end向后移动if (nums[i] - nums[i - 1] == 1) {end = nums[i];} else {//如果前后两个数字不相连 也就是范围需要分开 这个时候就开始将前面的start和end形成一个新的返回总结if (start != end)list.add("" + start + "->" + end);elselist.add("" + start);//对于start和end重新定位start = nums[i];end = nums[i];}if (i == nums.length - 1) {if (start == end) {list.add("" + start);} else {list.add("" + start + "->" + end);}}}return list;}}
0 0
- LeetCode228——Summary Ranges
- LeetCode228——Summary Ranges
- LeetCode228:Summary Ranges
- leetcode228. Summary Ranges
- leetcode228. Summary Ranges
- LeetCode——Summary Ranges
- Algorithms—228.Summary Ranges
- Algorithms—226.Summary Ranges
- Leetcode——228. Summary Ranges
- leetcode解题报告228——Summary Ranges
- leetcode刷题日记——Summary Ranges
- Summary Ranges
- summary ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- Summary Ranges
- iOS基础(oc)-封装
- git下载Spring项目源码并构建为eclipse工程
- 网络编程二
- Arcpy基础入门-5、读取自定义格式xml
- Eclipse CDT无法产生二进制文件问题。
- LeetCode228——Summary Ranges
- 页面的跳转和数据传递
- centos6.3 安装codebokcs
- leetcode two sum
- 带参数main函数
- 广播与服务一
- C++新特性学习(1)
- android 调用WebService
- 广播与服务二