这个题感觉很多题解存在问题或者说测试点不够完善,比如说 输入:1 7 输出应为:1 ;输入:2 1 6 输出应为:2 很多题解我这说的两个案例输出都为0。原因及只要存在Si=0(S为n个数前缀和%7)就会有解(除非a1~ai都是0)。当然i>=1,输入的数的下标也从1开始。很多题解是判断S1~Sn中某两个数是否相同判断该区间和是否%7==0。但是忽略了当Si=0时就以及存在满足的区间(当然除非该区间都是0)。而不需要有两个Si=0。所以这里可以巧妙的用上S0=0,可以将第一次出现余数为0的下标定为成0就能解决了,即for (int i=n; i>=0; i--) first[s[i]]=i;//标记第一次出现余数从0~6的位置。剩下的就跟题解中的一样了。表达有限。。。