上面描述得有错误,因为当时急着去撒尿
我做个事例,比如 5 10 12 13 四个数
第一步,求出两两差值,分别是 1 2 3 5 7 8
第二步,作一个数组,下标从4开始,到8结束。 因为m不可能小于n,所以从n开始;如果m大于等于最大的哪个数,必然是可以的,所以到最大值结束。
将差所在位置置1。即
位置: 4 5 6 7 8
数值: 0 1 0 1 1
第三步,
从4开始,检测 buf[4],buf[8],buf[12],…… 上是否有1,如果有,则失败 // 我这里数组比较小,只到buf[8]就行了
从5开始,检测 buf[5],buf[10],buf[15],…… 上是否有1,如果有,则失败
从6开始,检测 buf[6],buf[12],buf[18],…… 上是否有1,如果没有,则good,就是它了