zoukankan      html  css  js  c++  java
  • Golang数组去重&切片去重

    方法一:
    定义一个新切片(数组),存放原数组的第一个元素,然后将新切片(数组)与原切片(数组)的元素一一对比,如果不同则存放在新切片(数组)中。

    package main
    
    import "fmt"
    
    func main() {
        var arr = []string{"hello", "hi", "world", "hi", "china", "hello", "hi"}
        fmt.Println(RemoveRepeatedElement(arr))
    }
    
    
    func RemoveRepeatedElement(arr []string) (newArr []string) {
        newArr = make([]string, 0)
        for i := 0; i < len(arr); i++ {
            repeat := false
            for j := i + 1; j < len(arr); j++ {
                if arr[i] == arr[j] {
                    repeat = true
                    break
                }
            }
            if !repeat {
                newArr = append(newArr, arr[i])
            }
        }
        return
    }
    

    方法二:
    先将原切片(数组)进行排序,在将相邻的元素进行比较,如果不同则存放在新切片(数组)中。

    package main
    
    import "fmt"
    
    func main() {
        var arr = []string{"hello", "hi", "world", "hi", "china", "hello", "hi"}
        fmt.Println(RemoveRepeatedElement(arr))
    }
    
    
    func RemoveRepeatedElement(arr []string) (newArr []string) {
        newArr = make([]string, 0)
        sort.Strings(arr)
        for i := 0; i < len(arr); i++ {
            repeat := false
            for j := i + 1; j < len(arr); j++ {
                if arr[i] == arr[j] {
                    repeat = true
                    break
                }
            }
            if !repeat {
                newArr = append(newArr, arr[i])
            }
        }
        return
    }
    

    上面两种方法,第一种的效率要高于第二种的。可以通过测试比较大的数组来观察两种的执行速度

  • 相关阅读:
    gazebo自建小车备忘
    关于hokuyo的一些参数的备忘
    xenserver加入池报错The servers in this pool are not homogeneous
    exchange管理控制台初始化失败--Kerberos连接失败
    修复windows系统更新失败
    powershell同步时间
    powershell创建密文密码文件
    powershell常用命令
    Graylog客户端及服务端
    powershell,cmd,shell查看帮助
  • 原文地址:https://www.cnblogs.com/enumx/p/12323081.html
Copyright © 2011-2022 走看看