解析:zigzag数组是一个“之”字形排列的数组。也被称为蛇形数组。
0 2 3 9 10 20 21 35
1 4 8 11 19 22 34 36
5 7 12 18 23 33 37 48
6 13 17 24 32 38 47 49
14 16 25 31 39 46 50 57
15 26 30 40 45 51 56 58
27 29 41 44 52 55 59 62
28 42 43 53 54 60 61 63
由于对同一斜线上的元素,s=i+j为常数
1.对于第n个(n<N)斜线:
每一斜线个数比上一行多一个,则每一斜线的第一个值表示了在该斜线之前元素的个数,即一个累加 :
(s+1)*s/2
斜线中的任意元素可表示为s*(s+1)/2+((i+j)%2==0 ? i : j)
2.同理对于第n个(n>=N)的斜线:
每斜线的元素个数开始减少,等差数组不适用,为方便起见,可以用减法计算元素个数,
剩余元素的斜线数目:s1=&