题解 | 数组的partition调整

数组的partition调整

https://www.nowcoder.com/practice/d311bcce968d4d849d998a799bf7492a

package main

import (
    "fmt"
)

func main() {
    num := 0
    for {
        n, _ := fmt.Scan(&num)
        if n == 0 {
            break
        } else {
            arr := make([]int, num)
            for i:=0; i<len(arr); i++ {
                fmt.Scan(&arr[i])
            }
            less := 0
            i := 1
            for i<num { // 这里假设less都边界为board=(num+1/2+1),
			  //应该可以提前终止判断的,好像不行没有想通 && less<board, 不过两者条件没有必然关系
                if arr[i] != arr[less] {
                    less++
                    arr[i], arr[less] = arr[less], arr[i]
                    i++
                } else {
                    i++
                }
            }
            for i:=0; i<num; i++ {
                if i==num-1 {
                    fmt.Println(arr[i])
                } else {
                    fmt.Printf("%d ", arr[i])
                }
            }
        }
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
2025-12-04 17:00
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务