golang数组题

  1. 数组反转
func reverseArray(arr []int) []int {
	length := len(arr)
	for i := 0; i < length/2; i++ {
		temp := arr[length-1-i]
		arr[length-1-i] = arr[i]
		arr[i] = temp
	}
	return arr
}
  1. 删除数组最大值, 不排序
func delMax(arr []int) []int {
	if len(arr) <= 1 {
		return arr
	}
	max := arr[0]
	maxIndex := 0
	for i := 1; i < len(arr); i++ {
		if max < arr[i] {
			max = arr[i]
			maxIndex = i
		}
	}
	//fmt.Printf("maxVal=%v, maxIndex=%v", max, maxIndex)
	return append(arr[:maxIndex], arr[maxIndex+1:]...)
}
  1. 查找无序数组第k大的数
func findKthLargest(arr []int,k int) int  {
	return findK(arr, k, 0, len(arr)-1)
}
func findK(array []int, k, start, end int) int {
	l := start
	r := end
	pivot := array[l]

	for l < r {
		for l < r && array[r] <= pivot {
			r--
		}
		array[l] = array[r]
		for l < r && array[l] >= pivot {
			l++
		}
		array[r] = array[l]
	}
	array[r] = pivot
	if r == k-1 {
		return pivot
	} else if r > k-1 {
		return findK(array, k, start, r-1)
	} else {
		return findK(array, k, r+1, end)
	}
}
  1. 数组去重去空,利用数组
func removeDuplicatesAndEmpty(arr []string) (newArr []string) {
	sort.Strings(arr)
	for i := 0; i < len(arr); i++ {
		if (i > 0 && arr[i] == arr[i-1]) || len(arr) == 0 {
			continue
		}
		newArr = append(newArr, arr[i])
	}
	return
}
  1. 数组去重去空,利用map
func removeMap(arr []string) (newArr []string) {
	m := make(map[string]bool) //map的值不重要
	var result []string
	for _, v := range arr {
		if _, ok := m[v]; !ok {
			result = append(result, v)
			m[v] = true
		}
	}
	return result
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值