解题思路:
1:暴力法:循环一遍,统计0的个数,然后设置前面为0,后面为1;
2:使用golang的自带的排序接口,面试的话肯定不让用,不过可以说一下,其实就是排序;
3:使用类似快排的方法, 直接见代码:
func zeroOne(nums []int) []int {
if len(nums) == 0 {
return nums
}
l, r := 0, len(nums)-1
for l <= r {
for l <= r && nums[l] == 0 {
l++
}
for l <= r && nums[r] == 1 {
r--
}
if l <= r {
nums[l], nums[r] = nums[r], nums[l]
l++
r--
}
}
return nums
}