第三题  我做了一下,用并查集好做一些;分配的时候从 start =0, 找一下start的父节点。 判断1、如果父节点是自己,end = start+num-1  找下end的父节点是不是end,如果是的话。判断一下start到end之间的数,判断这些数的父节点是不是这些数本身。是的话,首地址就是start。让start到end 的父节点都为end。 返回start;  不是的话 就继续循环  start = 中间占用的最后一个地址 +1   // num为分配地址的大小 判断2、 如果父节点不是自己,就让 start= 父节点+1;  循环 释放:判断一下 如果num的 父节点为自己, 或者num<0 || num>100 , 或者 num>0  num-1的父节点和num的父节点相同  返回error;           否则  就把 num 到 num父节点之间数的父节点置为其本身。           比如  0-4, 0的父节点为4, [4,4,4,4,4]   变为 [0,1,2,3,4]  让后续分配的时候可以用 //  可能有不对的地方   逻辑大概是这个逻辑