请教 每k个节点一组反转链表

同样的两段代码,为什么第一个可以AC,而第二个会报错
#include<iostream>
#include<vector>
using namespace std;
 
struct ListNode
{
    int val;
    ListNode* next;
    ListNode(int x):val(x),next(nullptr){}
};
 
ListNode* creatList(vector<int> myVec)
{
    ListNode* pHead=new ListNode(myVec[0]);
    ListNode* prev = pHead;
    for(int i=1;i<myVec.size()-1;i++)
    {
        pHead->next = new ListNode(myVec[i]);
        pHead=pHead->next;
    }
    return prev;
}
 
ListNode* reverseList(ListNode* pHead,int k)
{
    ListNode* right = pHead;
    ListNode* left = pHead;
    ListNode* prev = pHead;
    for(int i=0;i<k;i++)
    {
        if(right!=nullptr)
            right = right->next;
        else
            return left;
    }
    ListNode* head = left;
    while(left!=right)
    {
        ListNode* pNext = left->next;
        left ->next = prev;
        prev = left;
        left = pNext;
    }
    head->next = reverseList(right,k);
    return prev;
     
}
 
int main()
{
    vector<int> myVec;
    int temp=0;
    while(cin>>temp)
        myVec.push_back(temp);
    int k=myVec[myVec.size()-1];
    ListNode* pHead = creatList(myVec);
    pHead = reverseList(pHead, k);
    while(pHead!=nullptr)
    {
        cout<<pHead->val<<" ";
        pHead=pHead->next;
    }
         
    return 0;
}
#include<iostream>
#include<vector>
using namespace std;

struct ListNode{
    int val;
    ListNode* next;
    ListNode(int x):val(x), next(nullptr){}
};

ListNode* creatlist(vector<int> num){
    ListNode* pHead = new ListNode(num[0]);
    ListNode* pre = pHead;
    for(int i = 1;i < num.size()-1;i++){
        pre->next  = new ListNode(num[i]);
        pre = pre->next;
    }
    return pHead;
}

ListNode* reverselist(ListNode* pHead, int k){
    ListNode* right = pHead;
    ListNode* left = pHead;
    ListNode* pre = pHead;
    for(int i = 0;i < k;i++){
        if(right != nullptr)
            right = right-> next;
        else
            return left;
    }
    ListNode* head = left;
    while(left != right){
        ListNode* next= left->next;
        left->next = pre;
        pre = left;
        left = next;
    }
    head->next = reverselist(right,  k);
    return pre;
    
}

int mian(){
    vector<int> num;
    int n =0;
    while(cin >> n){
        num.push_back(n);
    }
    int k = num[num.size()-1];
    ListNode* pNode= creatlist(num);
    ListNode* res = reverselist(pNode,k);
    while(res != nullptr){
        cout << res->val << " ";
        res= res->next;
    }
    
    return 0;
    
}
报错信息如下

warning: comparison of integers of different signs: 'int' and 'unsigned long' [-Wsign-compare]

for(int i = 1;i < num.size()-1;i++){

求大佬帮忙解答一下


#笔试题目#
全部评论
size返回值是无符号的,每次看到这个-1还没强转就……危(
点赞 回复 分享
发布于 2020-09-17 21:39
上来就看到mian!!😂
点赞 回复 分享
发布于 2020-09-17 21:35
第二段代码写成了int mian() ? (应该是main)
点赞 回复 分享
发布于 2020-09-17 19:04

相关推荐

03-24 13:35
门头沟学院 Java
攒攒人品!有面试过同岗的朋友欢迎评论区交流1.实习拷打2.项目拷打3.你们的&nbsp;Agent&nbsp;是单&nbsp;Agent&nbsp;还是多&nbsp;Agent?为什么这么设计?有没有考虑过另一种方案?4.Agent&nbsp;任务是怎么拆分的?拆分粒度是怎么决定的?5.上下文是怎么构建的?你们怎么避免上下文过长或者信息污染?6.如果上下文窗口不够,你优先保留哪些信息?为什么?7.你们做代码理解的时候,AST、调用关系这些信息是怎么用起来的?8.单测生成里,哪些代码其实不适合生成单测?你们是怎么识别并过滤的?9.覆盖率高但测试质量很差,这种情况你见过吗?你们是怎么解决的?10.mock在单测里什么时候是必须的?什么时候反而会带来问题?11.如果一个函数依赖数据库和RPC,你怎么让模型生成的单测还能稳定运行?12.你们怎么评估生成单测的质量?除了覆盖率,还有哪些指标?13.LLM的输入到底是什么?模型真正看到的是什么?14.self&nbsp;attention的核心作用是什么,为什么要拆成&nbsp;QKV?为什么attention&nbsp;可以建模长距离关系,15.为什么需要multi-head为什么&nbsp;attention可以看成动态加权16.同一个&nbsp;token的&nbsp;Q、K、V&nbsp;为什么不一样?17.attention复杂度很高,如果上下文特别长,你会怎么优化?18.模型产生幻觉的时候,一般是什么原因?工程上有什么办法降低19.Python有多线程吗?GIL&nbsp;是干什么的?什么时候多线程是有用的?20.讲一下C++从源码到可执行文件的流程。21.手撕:给定数组的区间中位数之和:给定一个长度为n的数nums,一个区间&nbsp;[l,&nbsp;r]&nbsp;的&nbsp;中位数&nbsp;为:如果区间长度是奇数:排序后中间的数,如果是偶数:排序后靠左的那个数,要求:计算所有子数组的中位数之和
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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