113. 特殊排序

第一次做交互题,这种题只需要写一个函数就行了,返回要返回的,我们可以假设前面也排好序了,因为是单调递增的,我们可以二分出来要插入数的位置,二分出比他小的数的位置,然后从后面往前面依次交换放到该位置后面就行了,特判一下如果没有比他小的数,那就把它放到最前面。

// Forward declaration of compare API.
// bool compare(int a, int b);
// return bool means whether a is less than b.

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)/2;
                if(compare(res[mid],i)) l=mid;
                else        r=mid-1;
            }
            res.push_back(i);
            for(int j=res.size()-2;j>l;j--)
            swap(res[j],res[j+1]);
             if (!compare(res[l], i)) swap(res[l], res[l + 1]);
        }
        return res;
    }
};
全部评论

相关推荐

勇敢的突尼斯海怪选钝...:楼主这拒意向话术好得体呀 !求问HR回复态度咋样呀
点赞 评论 收藏
分享
程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务