脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Golang - go语言题解LeetCode228汇总区间示例详解

go语言题解LeetCode228汇总区间示例详解

2023-06-21 09:58刘09k11 Golang

这篇文章主要为大家介绍了go语言题解LeetCode228汇总区间示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目描述

原题链接 :

228. 汇总区间

给定一个  无重复元素 的 有序 整数数组 nums

返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x

列表中的每个区间范围 [a,b] 应该按如下格式输出:

  • "a->b" ,如果 a != b
  • "a" ,如果 a == b  

示例 1:

?
1
2
3
4
5
6
输入:nums = [0,1,2,4,5,7]
输出:["0->2","4->5","7"]
解释:区间范围是:
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"

示例 2:

?
1
2
3
4
5
6
7
输入:nums = [0,2,3,4,6,8,9]
输出:["0","2->4","6","8->9"]
解释:区间范围是:
[0,0] --> "0"
[2,4] --> "2->4"
[6,6] --> "6"
[8,9] --> "8->9"

提示:

0 <= nums.length <= 20

-2^31 <= nums[i] <= 2^31 - 1

  • nums 中的所有值都 互不相同
  • nums 按升序排列

思路分析

本题思路比较明晰,设立双指针,一前一后遍历数组,当遇到结果不是有序递增,即nums[j]+1 != nums[j+1]时,中断数组,从i,到j进行条件判断插入字符串,插入完之后,将i移动到j后面那个位置,即i = j + 1。

本题难点在于边界处理,因为涉及到j+1,遍历时只能遍历到n-1,最后一位需要依照相同的思路重新判断一遍,如果数组为空或者只有一个元素,循环语句也不好判断,因为无法与第二个元素相比较。有评论使用逃课方法,即在数组后额外安插一个整型最大值,但这样的方法如果数组原本最后一个元素是最大值-1时,会导致结果错误不能使用。

AC 代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
vector<string> summaryRanges(vector<int> &nums) {
    vector<string> s;
    if (nums.size() == 0)
        return s;
    if (nums.size() == 1) {
        s.push_back(to_string(nums[0]));
        return s;
    }
    int i = 0, j = 0, n = nums.size();
    string t;
    for (; j < n - 1; j++) {
        if (nums[j] + 1 != nums[j + 1]) {
            if (i == j)
                s.push_back(to_string(nums[i]));
            else
                s.push_back(to_string(nums[i]) + "->" + to_string(nums[j]));
            i = j + 1;
        }
    }
    if (i == j)
        s.push_back(to_string(nums[i]));
    else
        s.push_back(to_string(nums[i]) + "->" + to_string(nums[j]));
    return s;
}

以上就是go语言题解LeetCode228汇总区间示例详解的详细内容,更多关于go语言汇总区间的资料请关注服务器之家其它相关文章!

原文链接:https://juejin.cn/post/7174036413967499300

延伸 · 阅读

精彩推荐
  • Golanggo语言制作一个gif动态图

    go语言制作一个gif动态图

    这篇文章主要介绍了go制作一个gif动态图的相关资料,需要的朋友可以参考下 ...

    脚本之家8172020-04-25
  • Golanggo语言题解LeetCode228汇总区间示例详解

    go语言题解LeetCode228汇总区间示例详解

    这篇文章主要为大家介绍了go语言题解LeetCode228汇总区间示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    刘09k116392023-06-21
  • GolangGo 提案:增加泛型版 Slices 和 Maps 新包

    Go 提案:增加泛型版 Slices 和 Maps 新包

    今天要讨论的泛型版功能支持也是如此,分别包含:map(#47330)、slice(#45955)、container/set(#47331) 三种通用类型的支持。...

    脑子进煎鱼了10122021-08-10
  • Golang如何在 Go 中将 []byte 转换为 io.Reader?

    如何在 Go 中将 []byte 转换为 io.Reader?

    在 stackoverflow 上看到一个问题,题主进行了一个网络请求,接口返回的是 []byte。如果想要将其转换成 io.Reader,需要怎么做呢?...

    AlwaysBeta9202021-12-29
  • Golanggolang websocket 服务端的实现

    golang websocket 服务端的实现

    这篇文章主要介绍了golang websocket 服务端的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面...

    小柒的另一个世界4262020-05-27
  • Golang这个 Go 语言的经典 “坑”,我算是服了

    这个 Go 语言的经典 “坑”,我算是服了

    在开始之前,先考你一个非常 Go 味的经典问题:如何判断一个 interface{} 的值是否为 nil ?这也是面试有可能会被问到的一个问题,这个问题很 “迷”,平时...

    Go编程时光5512022-01-04
  • Golanggolang中使用mongo的方法介绍

    golang中使用mongo的方法介绍

    这篇文章主要给大家介绍了关于golang中使用mongo的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    yandaren7102020-05-17
  • GolangGolang中生成随机字符串并复制到粘贴板的方法

    Golang中生成随机字符串并复制到粘贴板的方法

    这篇文章主要介绍了Golang中生成随机字符串并复制到粘贴板的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    梅云罗5342020-06-01