请教 每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;为:如果区间长度是奇数:排序后中间的数,如果是偶数:排序后靠左的那个数,要求:计算所有子数组的中位数之和
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
03-16 17:33
本来没有敢投递字节(太硬核),上次投了个财经部门的日常实习,因为不能快速到岗被拒了。HR从人才库里把我捞出来,机缘巧合下面了这个部门。这次下午起来太放松了,忘记录音了,只能给出一个回忆版。自我介绍:这次着重介绍怎么看jdk源码的,项目和经历反而没怎么细说Q1&nbsp;lua脚本怎么实现原子性Q2&nbsp;CAS原理,和lua脚本哪个好Q3&nbsp;刚才提到了负载均衡,解释一下Q4&nbsp;熟悉那些关系型和非关系型的数据库,这里着重说了一下esQ5&nbsp;RAG:向量数据库用的什么,怎么存的。怎么检索的,检索之后的排序算法RRFQ6&nbsp;SSE是怎么做的,推理的时候也是SSE吗Q7&nbsp;MCP工具调用是怎么做的,工具参数解析是怎么做的Q8&nbsp;记忆管理是怎么做的Q9&nbsp;你提到对话之后异步抽取记忆,那么有没有可能存在记忆丢失的可能我答的是由于异步抽取,可能还没有完成记忆落库,主线程的检索请求就来了,这个时候确实检索不到,但是一般最新的消息在滑动窗口里面,所以理论上没关系。我问面试官应该怎么做,他说用LangGraph&nbsp;,图+状态的流转。还说现在记忆管理是一个开放的问题,有时候做项目会有记忆的污染(一个项目里出现另一个项目的记忆),用户偏好作为记忆是没问题的,不同项目的记忆隔离是个问题。Q10职业规划(做算法还是研发),实习时间Q11反问,实习生过去做AIops,尝试用agent来自动监控、管理后台的那些容器之类的没有手撕,撕也不怕,上周携程美团拼都督都撕了好几遍了。最后还聊了几句,他说AI时代,知识储备虽然重要,但是看中候选人的潜力。如果候选人能在某个问题展示出自己的思考,或者解决问题的能力也是可以的。AI已经可以让一个人快速获取知识,所以思考和能力比记忆更重要。之前两个京东的面试官,一个美团虚拟数字人。这次面试是体验最好的一次了,我答的混乱的地方他都会总结一下,有些不到位的,他还补充了一下细节,像是探讨交流一样。
查看10道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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