228. 汇总区间

力扣网址:228. 汇总区间 - 力扣(LeetCode)

就看到题目第一眼想到的是排序,然后看了一下给出的例子,他们应该都是已经排好序的,只需要我们找出连续的区间。

这是修正之后的代码

class Solution {
    public List<String> summaryRanges(int[] nums) {
        List<String> list = new ArrayList<>();
        int i = 0;
        int n = nums.length;
        while (i < n) {
            int low = i;
            while (i < n - 1 && nums[i + 1] == nums[i] + 1) {
                i++;
            }
            int high = i;
            if (low < high) {
                list.add(nums[low] + "->" + nums[high]);
            } else {
                list.add(String.valueOf(nums[low]));
            }
            i++;
        }
        return list;
    }
}

记一次失败测试,思路感觉是对的,但是内存超出限制,过会检查代码到底哪里占用内存过多;

class Solution {
    public List<String> summaryRanges(int[] nums) {
        List<String>list=new ArrayList<String>();//使用List集合来纪录
        int i=0;//下标
        int n=nums.length;//用来界定循环条件
        String temp=null;//用来将low和high转换成字符串
        int low=0,high=0;//记录范围
        while(i<n){
            low=i;
            while(i<(n-1)&&nums[i+1]==nums[i]+1){
                i++;
            }high= i;
            if(low<high){
                temp=String.valueOf(low)+"->"+String.valueOf(high);
                list.add(temp);
            }list.add(String.valueOf(i));
        }return list;
    }
}

好好好,gpt,我们的好伙伴,以下是gpt给出我的回答,

该代码的问题在于以下一行:list.add(String.valueOf(i));。它将当前索引i添加到list而不是范围。这导致list无限增长,消耗了比必要更多的内存,从而导致内存超出限制的错误。

以下是我在写这道题时参考的博客(ps有些知识点忘掉了狗头保命)

 如何往List集合中添加元素:Java——List 添加元素的方法_list添加元素-CSDN博客

字符串和数字之间的转换:Java数字、字符、字符串互相转换_java字符转数字-CSDN博客​​​​​​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值