golang将数组重复元素放在数组后面

本文介绍了一种利用Go语言中的map来高效统计数组中重复元素的方法,并对比了另一种通过遍历数组并删除重复元素的方式。两种方法均实现了统计功能,但使用map的方式更加简洁高效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 使用map. 包含重复元素个数
	s := []int{9, 8, 9, 1, 3, 2, 3, 1, 5, 2, 1, 1}
	time1 := time.Now().UnixNano()
	s2 := make([]int, 0)
	m := make(map[int]int)
	for i, v := range s {
		if _, ok := m[v]; ok {
			s2 = append(s2, v)
		}
		m[v] = i
	}
	//fmt.Println(len(m), m, len(s)-len(m))
	s1 := make([]int, 0)
	for k := range m {
		s1 = append(s1, k)
	}
	s1 = append(s1, s2...)
	fmt.Println(s1, len(s)-len(m), time.Now().UnixNano()-time1)
  1. 使用中间变量.
	n := 0
	p := 0
	for i := 0; i < len(s); i++ {
		for j := i + 1; j < len(s); j++ {
			if s[i] == s[j] {
				n = n + 1
				p = s[j]
				//删除重复元素
				s = append(s[:j], s[j+1:]...)
				//追加到末尾
				s = append(s, p)
			}
		}
	}
	fmt.Println(s, n, time.Now().UnixNano()-time1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值