golang多维度排序及题解最长连续序列

 更新时间:2023年10月09日 10:50:03   作者:三四一十二  
这篇文章主要为大家介绍了golang多维度排序及题解最长连续序列示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

golang 多维度排序

func main() {
    type PersonAge struct {
        Name  string
        Age   int
        Hight int
    }
    ps := []PersonAge{
        {"bo", 31, 333},
        {"ao", 42, 34},
        {"ao", 41, 23423},
        {"ao", 40, 23423},
        {"ao", 45, 12},
        {"co", 17, 3434},
        {"do", 26, 2343},
    }
    sort.Slice(ps, func(i, j int) bool {
        //!=  有大小时排序,相等时,下一个选项的优先级
        if ps[i].Name != ps[j].Name {
            return ps[i].Name < ps[j].Name
        }
        if ps[i].Hight != ps[j].Hight {
            return ps[i].Hight < ps[j].Hight
        }
        return ps[i].Age < ps[j].Age
    })
    log.Println(ps)
    return
}

结果

[{ao 45 12} {ao 42 34} {ao 40 23423} {ao 41 23423} {bo 31 333} {co 17 3434} {do 26 2343}]

题解最长连续序列

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

最长连续序列原题

示例 1:

输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
示例 2:

输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

//排序
func longestConsecutive(nums []int) int {
    if len(nums) == 0 {
        return 0
    }
    sort.Ints(nums)
    long := 1
    lst := 1
    tmp := nums[0]
    for i, _ := range nums {
        if nums[i] == tmp+1 {
            long++
            lst = max(lst, long)
            tmp = nums[i]
        } else if nums[i] == tmp {
            continue
        } else {
            long = 1
            tmp = nums[i]
        }
    }
    return lst
}
func max(a,b int)int{
    if a>b{
        return a
    }
    return b
}

以上就是golang多维度排序及题解最长连续序列的详细内容,更多关于golang 排序的资料请关注脚本之家其它相关文章!

相关文章

  • Go 切片copy()函数的用法与原理详解

    Go 切片copy()函数的用法与原理详解

    本文详细剖析Go语言切片复制的核心API copy()函数,涵盖基础用法、目标切片长度、复制子切片、目标切片为空、合并切片、与append对比及实战应用,通过具体示例,解释了完全独立复制、不自动扩容、返回值含义等关键知识点
    2026-05-05
  • CGO编程基础快速入门

    CGO编程基础快速入门

    这篇文章主要为大家介绍了CGO编程基础快速入门示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 如何利用Go语言实现LRU Cache

    如何利用Go语言实现LRU Cache

    这篇文章主要介绍了如何利用Go语言实现LRU Cache,LRU是Least Recently Used的缩写,是一种操作系统中常用的页面置换算法,下面我们一起进入文章了解更多内容吧,需要的朋友可以参考一下
    2022-03-03
  • Go检查结构体中是否存在某个字段及创建结构体切片或映射

    Go检查结构体中是否存在某个字段及创建结构体切片或映射

    这篇文章主要为大家介绍了Go检查结构体中是否存在某个字段及创建结构体切片或映射实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Go语言使用SQLite实现本地存储的示例详解

    Go语言使用SQLite实现本地存储的示例详解

    在开发工具类软件、桌面应用或者移动端时,我们经常需要一个轻量级数据库来做本地存储,本文将带你一步步用 Go 搭建一个 SQLite 本地存储的示例,希望对大家有所帮助
    2025-08-08
  • 详解golang中Context超时控制与原理

    详解golang中Context超时控制与原理

    Context本身的含义是上下文,我们可以理解为它内部携带了超时信息、退出信号,以及其他一些上下文相关的值,本文给大家详细介绍了golang中Context超时控制与原理,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2024-01-01
  • 解决golang.org不能访问的问题(推荐)

    解决golang.org不能访问的问题(推荐)

    这篇文章主要介绍了解决golang.org不能访问的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • go语言代码生成器code generator使用示例介绍

    go语言代码生成器code generator使用示例介绍

    这篇文章主要为大家介绍了go语言代码生成器code generator的使用简单介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Go 中闭包的底层原理

    Go 中闭包的底层原理

    这篇文章主要介绍了Go 中闭包的底层原理,闭包的基本原理是一种现象,一个函数内引用了外部的局部变量的现象,带着些许的了解和小编一起进入文章正题学习
    2021-10-10
  • Go语言中一定要知道的切片使用注意事项总结

    Go语言中一定要知道的切片使用注意事项总结

    了解和掌握切片的使用注意事项,可以避免意外的程序行为,所以本文就来和大家深入探讨一下Go语言切片常见的注意事项,希望对大家有所帮助
    2023-06-06

最新评论