题解 | #小选货架#

小选货架

http://www.nowcoder.com/practice/72704cd9756944c2bb5de15b195ae2b4

  1. 使用从右向左逼近的思路去做。切左指针指向第一个元素,右指针指向第二个元素。如果二者之和小的话,那就都移动,当作放过了。如果二者之和大的话,那就之移动最大的。记住提前升序排序。
  2. 指针如果发生移动就证明这个货物已经放了。
#include<bits/stdc++.h>

using namespace std;

int main(){
    int x;

    while(cin>>x){
        int a;
        vector<int> res;
        while(cin>>a){
            res.push_back(a);
        }
        int ans =0,temp =0;
        sort(res.begin(),res.end());

        int l = 0, r = res.size()-1;//从两边开始

        while(r>=0&& l<=res.size()-1&& r>=l){
            if(res[r]==x){
                ans++;
                r--;
            }else if(res[l]+res[r]<=x){
                ans++;
                l++;
                r--;
            }else{
                ans++;
                r--;
            }
        }


        cout<<ans<<endl;
    }

    return 0;
}
大厂笔试题题解 文章被收录于专栏

主要是公司笔试题得一些总结

全部评论

相关推荐

06-27 18:45
中山大学 Ruby
25届应届毕业生,来广州2个礼拜了,找不到工作,绝望了,太难过了…
应届想染班味:9爷找不到工作只能说明,太摆了或者太挑了。
点赞 评论 收藏
分享
06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在午休:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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