每K个一组反转链表

题目链接

reverse函数

注意,我卡在80%卡了很久,主要是vector反转的时候越界了,我开始想着不可能越界的,以为是输入的时候有问题,后来改了一下反转的地方,终于过了。真的是代码不规范,bug卡一年。

#include<bits/stdc++.h>
using namespace std;
int k=0;
vector<int> v;

int main(){
    string str;
    getline(cin, str);
    int t=0;

    for(int i = 0; i <= str.size(); i++){
        if(str[i] == ' ' || i == str.size()){
            if(t!=0) v.push_back(t);
            t = 0;
        }else{
            t = t * 10 + str[i] - '0'; 
        }
    }
    cin>>k;
    if(v.size()==0){ //数组长度为0 
        cout<<endl;
        return 0;
    }
    if(k!=1){  //间隔为非1反转 
        for(int i = 0; i <v.size(); i+=k){
            if(i+k <= v.size())
                reverse(v.begin()+i, v.begin()+i+k);
        }
    }

    for(int i = 0; i < v.size(); i++){
        cout<<v[i];
        if(i!=v.size()-1) cout<<" ";
        else cout<<endl;
    }
    return 0;
}
全部评论

相关推荐

今晚做笔试的还有机会约面吗?有听说后面做笔试的会被认为来华为的意愿度不是很高.....
ggrr:不会,华为笔试都要排队的。不是说想写就能发的。有的人投递晚了几天就排在后面写了。
投递华为技术有限公司等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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