码迷,mamicode.com
首页 > 编程语言 > 详细

Golang数组去重&切片去重

时间:2020-02-17 19:36:01      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:remove   Golan   定义   append   速度   元素   不同   int   hello   

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

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
}

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

Golang数组去重&切片去重

标签:remove   Golan   定义   append   速度   元素   不同   int   hello   

原文地址:https://www.cnblogs.com/enumx/p/12323081.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!