学完之后做一些小练习

练习

  1. 创建一个[]int 切片 , 将切片重复的内容去除并且返回[]int 切片. 例如:

    []int{1,2,2,3,4,4,5,6,7,7} => []int{1,2,3,4,5,6,7}

    2.创建一个[][]int这样的二维切片, 可以将它变成一维切片, 例如:

    [][]int{{1,2}, {3,4,5},{6,7,8}} => []int{1,2,3,4,5,6,7,8}

    3.创建一个接受[]int切片和列数量的函数, 并且返回一个[][]int切片, 例如:

    []int{1,2,3,4,5} 如果指定列数量为2 =>[][]int{{1,2}, {3,4}, {5,0}}

第一题

// 方法一 利用中间状态
func unique(m []int) []int {
    s := make([]int, 0)
    for _, value := range m {
        //首先定义一个状态
        status := true
        for _, v := range s {
            if (value == v) {
                //如果有相同的值就改变状态值
                status = false
                break
            }
        }
        if status {
            s = append(s, value)
        }
    }
    return s
}
// 方法二 利用map的特性 => key值唯一性
func unique2(m[]int) []int {
    s := make([]int, 0)
    smap := make(map[int]int)
    for _, value := range m {
        //计算map长度
        length := len(smap)
        smap[value] = 1
        //比较map长度, 如果map长度不相等, 说明key不存在
        if len(smap) != length {
            s = append(s, value)
        }
    }
    return  s
}

func main() {
    fmt.Println(unique(s))
    fmt.Println(unique2(s))
}

测试
s := []int{1,2,2,3,6,8,1,6,10,10,9,9,9,9,9,9,9,9,103,8}
//结果
[1 2 3 6 8 10 9 103]
[1 2 3 6 8 10 9 103]

第二题

func merge(m [][]int) []int {
    res := make([]int, 0)

    for _, value := range m {
        res = append(res, value...)
    }
    return res
}
func main() {
    fmt.Println(merge(s))
}

test
s := [][]int{{1,2}, {3,4,5},{6,7,8}}
[1 2 3 4 5 6 7 8] // 结果

第三题

func qie(m []int, n int) [][]int {
    res := [][]int{}
    len := len(m)
    last := 0
    for i:=1; i<=len;i++ {
        if (i % n ==0) {
            last = i
            res =  append(res,m[i-n:i])
        } else if (i == len) {
            res = append(res, m[last:len])
        }
    }
    return res
}
func main() {
    fmt.Println(qie(s, 3))
}

test
s :=[]int{1,2,3,4,5}
[[1 2 3] [4 5]] //输出

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 2
JaguarJack

@zhouzhou 是的, 一般都是用len来测定,我这里就是做做例子的

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!