main1234 最近的时间轴更新
main1234

main1234

V2EX 第 665345 号会员,加入于 2023-12-01 15:48:34 +08:00
今日活跃度排名 3109
感兴趣想学 app 开发,学 flutter 还是 IOS 还是安卓?
问与答  •  main1234  •  10 小时 24 分钟前  •  最后回复来自 magic3584
6
多核下 32 位系统操作 int64 是原子性的么?
问与答  •  main1234  •  27 天前  •  最后回复来自 ysc3839
2
求求爹给解答下 golang sync.WaitGroup 的疑惑
  •  1   
    Go 编程语言  •  main1234  •  28 天前  •  最后回复来自 main1234
    6
    [求问] 没学历没基础咋入门 AI 啊
    程序员  •  main1234  •  4 天前  •  最后回复来自 ianEros
    64
    对于 Gap 锁的一些疑问
    MySQL  •  main1234  •  64 天前  •  最后回复来自 wangxin3
    9
    main1234 最近回复了
    @bthulu


    func reverse(arr []int, target1, target2 int) [][]int {
    res := make([][]int, 0)
    // 先排序
    sort.Ints(arr)
    // 逆序排序
    for i := 0; i < len(arr)/2; i++ {
    arr[i], arr[len(arr)-i-1] = arr[len(arr)-i-1], arr[i]
    }
    sum := 0
    track := make([]int, 0)
    var fn func(start int)
    fn = func(start int) {
    if sum > target1 && sum-track[len(track)-1] < target1 && sum-track[len(track)-1] <= target1-target2 {
    tmp := make([]int, len(track))
    copy(tmp, track)
    res = append(res, tmp)
    return
    }
    for i := start; i < len(arr); i++ {
    if sum-arr[i] >= target1 {
    continue
    }
    if sum-arr[i] >= target1-target2 {
    continue
    }
    sum += arr[i]
    track = append(track, arr[i])
    fn(i + 1)
    track = track[:len(track)-1]
    sum -= arr[i]
    }
    }
    fn(0)
    return res
    }
    @bthulu 对,改成你的判断,然后在 for 里面放两个剪枝就行了
    我的算法应该能继续剪枝
    func reverse(arr []int, target1, target2 int) [][]int {
    res := make([][]int, 0)
    // 先排序
    sort.Ints(arr)
    // 逆序排序
    for i := 0; i < len(arr)/2; i++ {
    arr[i], arr[len(arr)-i-1] = arr[len(arr)-i-1], arr[i]
    }
    sum := 0
    track := make([]int, 0)
    var fn func(start int)
    fn = func(start int) {
    if start == len(arr) {
    if sum < target1 && sum-track[len(track)-1] < target1 && sum-track[len(track)-1] < target1-target2 {
    tmp := make([]int, len(track))
    copy(tmp, track)
    res = append(res, tmp)
    return
    }
    }
    for i := start; i < len(arr); i++ {
    sum += arr[i]
    track = append(track, arr[i])
    fn(i + 1)
    track = track[:len(track)-1]
    sum -= arr[i]
    }
    }
    fn(0)
    return res
    }
    对于奇数,二进制表示中奇数一定比前面的偶数多一个 1 ,多的就是最低位的 1
    如 0 = 0 ,1 = 1 ,2=10 ,3=11
    对于偶数,二进制表示中偶数一定和除以 2 之后的那个数一样多,因为最低位是 0 ,除以 2 就是右移一位
    2 = 10 ,4=100 ,8=1000
    这里不就是奇数和偶数判断一下么,如果元素为 i ,i 如果是奇数则 i 的二进制 1 为 i-1 的二进制 1 个数+1 ,如果是偶数则是 i/2 的二进制数
    @zhuisui 求教下,也就是说命令都会写到 aof buffer ,如果 write 到 aof file 时候发现正在 fsync 则不会 write
    @zhuisui https://cloud.tencent.com/developer/article/1809891 所以这个文章里面说的是错的么
    @codegenerator aof_last_fsync 这个字段就是刷盘时间
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   998 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 21:56 · PVG 05:56 · LAX 14:56 · JFK 17:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.