第一题:因为是树,所以联通区域=删掉的边数+1,从小到大排序,后缀和+权值取最大即可,O(n)第二题:如果数组中有奇数,那么答案就是偶数的个数;没有则找到变成奇数次数最少的偶数,其除2的次数+数组里偶数个数-1就是正确答案第三题:找到数组中比初始手上的礼物价值大的第一个数N,从N开始数组一定要是正序的,否则输出-1;再只考虑array[:index(N)-1]构成的sub_array,依次从末尾替换大于手上礼物价值的元素,直到sub_array里第一个非正序的元素第四题:翻转不改变顺序,所以将两个s拼接在一起,找到最长且不超过n的 0 1 串即可