第三题 我做了一下,用并查集好做一些;分配的时候从 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] 让后续分配的时候可以用 // 可能有不对的地方 逻辑大概是这个逻辑

相关推荐

耀孝女:就是你排序挂了
点赞 评论 收藏
分享
10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
牛客网
牛客企业服务