l=mid,r=mid-1,mid=l+r+1>>1,l<r的写法有缺陷,就是当size==1时需要手动判断
我用常规写法,让l<=r,省去了复杂的特判,insert一步到位
C++ 代码
class Solution {
public:
vector<int> specialSort(int N) {
vector<int> res;
res.push_back(1);
for(int i=2;i<=N;++i){
int l=0,r=res.size()-1;
while(l<=r){
int mid=l+r>>1;
if(compare(res[mid],i)) l=mid+1;
else r=mid-1;
}
res.insert(res.begin()+l,i);
}
return res;
}
};