当前位置: 首页 > 后端技术 > Java

LeetCode-228-SummaryInterval

时间:2023-04-01 14:02:54 Java

SummaryInterval题目描述:给定一个无重复元素的有序整数数组nums。返回恰好覆盖数组中所有数字的最小有序区间范围列表。即nums的每个元素都恰好被某个区间范围覆盖,没有落在某个范围内但不属于nums的数x。列表中的每个区间范围[a,b]应该输出如下格式:"a->b",ifa!=b"a",例如a==b,请参考LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:遍历数组首先初始化一个result存储并返回结果,然后流程如下:如果nums为null或者nums没有元素,直接返回result;如果nums只有一个元素,则将唯一的元素添加到result中并返回结果;将start和end初始化为数组的第一个元素,然后从第一个位置开始遍历数组:如果当前元素比end大1,则表示连续,将当前元素赋值给end;否则,判断start是否等于end,即在结果中加上当前区间,然后将当前元素赋值给start和end。遍历完成后,将最后一个区间添加到结果中,返回结果。importjava.util.ArrayList;importjava.util.List;publicclassLeetCode_228{publicstaticListsummaryRanges(int[]nums){Listresult=newArrayList<>();如果(nums==null||nums.length==0){返回结果;}if(nums.length==1){result.add(String.valueOf(nums[0]));返回结果;}intstart=nums[0],end=nums[0];for(inti=1;i”+结束);}开始=结束=nums[i];}}if(start==end){result.add(""+start);}else{result.add(开始+“->”+结束);}返回资源终极;}publicstaticvoidmain(String[]args){int[]nums=newint[]{0,1,2,4,5,7};for(StringsummaryRange:summaryRanges(nums)){System.out.println(summaryRange);}}}【每日留言】你一定是冲出来的黑马,而不是流星