Lintcode 143. Sort Colors II go

10 篇文章 0 订阅

题目链接:https://www.lintcode.com/problem/sort-colors-ii/description

最近在刷一下go语言,写一些go的解法:

/**
 * @param colors: A list of integer
 * @param k: An integer
 * @return: nothing
 */
func sortColors2(colors *[]int, k int) {
	// write your code here
	var length int = len(*colors);
	if (colors == nil || length == 0) {
		return;
	}
	rainbowSort(colors, 0, length-1, 1, k);
}

func rainbowSort(colors *[]int, left int, right int, colorFrom int, colorTo int) {
	if colorFrom == colorTo {
		return;
	}

	if left >= right {
		return;
	}

	var colorMid int = (colorFrom + colorTo) / 2;
	var l int = left;
	var r int = right;
	for {
		if l > r {
			break;
		}
		for {
			if !(l <= r && (*colors)[l] <= colorMid) {
				break;
			}
			l++;
		}
		for {
			if !(l <= r && (*colors)[r] > colorMid) {
				break;
			}
			r--;
		}
		if l <= r {
			var temp int = (*colors)[l];
			(*colors)[l] = (*colors)[r];
			(*colors)[r] = temp;
			l++;
			r--;
		}
	}

	rainbowSort(colors, left, r, colorFrom, colorMid);
	rainbowSort(colors, l, right, colorMid+1, colorTo);
}

func main() {
	fmt.Println("lintcode");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值