修改了后半部分代码，减少了一遍循环