题解 | #链表中的节点每k个一组翻转#

链表中的节点每k个一组翻转

http://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @param k int整型 
     * @return ListNode类
     */
    ListNode* reverseKGroup(ListNode* head, int k) {
        // write code here
      	/* 基于反向链表,递归每一个区间就行了。一直在想怎么把区间排序后的尾部节点指向下一个区间的头节点,绕了
        一大圈,队列都用上了。后来猛然发现。当前区间的头指针就是指向反转后的尾节点,麻了*/
        int cursize = 0;  ListNode* temphead = head;int tempk = k;
        while(temphead){
            cursize++;
            temphead = temphead ->next;
        }
        if(head == nullptr || cursize < k){
            return head;
        }
          ListNode* p1 = nullptr;ListNode* p2 = head; ListNode* p3 = head->next;
          while(tempk--){
              p2->next = p1;
              p1 = p2;p2 = p3;
              if(p3){p3 = p3->next;}
            }
        head->next = reverseKGroup(p2, k); // 递归下一个区间,null或者尺寸小不做处理
        return p1; 
    }
};
全部评论

相关推荐

菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
暴走萝莉莉:这是社招场吧,作为HR说个实话:这个维护关系的意思是要有政府资源,在曾经的工作中通过人脉资源拿下过大订单的意思。这个有相关管理经验,意思也是真的要有同岗位经验。应酬什么的对于业务成交来说就算不乐意也是常态,就是要求说话好听情商高,酒量好。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务