题解 | #序列和#go语言滑动窗口

序列和

https://www.nowcoder.com/practice/46eb436eb6564a62b9f972160e1699c9

package main

import (
	"fmt"
)

func main() {
	N, L := 0, 0
	fmt.Scanf("%d %d", &N, &L)
	//suml := 0
	sum := add(L)
	if sum > N {
		fmt.Printf("No")
		return
	}
	l := 0
	r := L - 1
	minlen := 9999
	resl := l
	//0 1 2 3 4 5 6 7 8 9 //543792409 57
	for r < N/2 && l <= r {
		if sum == N {
			if r-l+1 < minlen && r-l+1 >= L {
				resl = l
				minlen = r - l + 1
            }
			l++
			sum -= l - 1
		}else if sum < N {
			r++
			sum += r
        }else{}
        for sum > N{ //真的奇葩了
			l++
			sum -= l - 1
		}
	}
	out(resl, minlen)

}

func add(n int) int {
	sum := 0
	for i := 0; i < n; i++ {
		sum += i
	}
	return sum
}

func out(l, leng int) {
	if leng > 100 {
		fmt.Printf("No")
		return
	}
	for i := l; i < l+leng; i++ {
		fmt.Printf("%d ", i)
	}
}


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务