博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]Swap Nodes in Pairs
阅读量:4151 次
发布时间:2019-05-25

本文共 1950 字,大约阅读时间需要 6 分钟。

struct ListNode {	int val;	ListNode *next;	ListNode(int x) : val(x), next(NULL) {}};class Solution {//when finished the code, find come cases to test it firstpublic:	ListNode *swapPairs(ListNode *head) {		// Start typing your C/C++ solution below		// DO NOT write int main() function		ListNode* prev = NULL;		ListNode* first = NULL;		ListNode* second = head;		int k = 1;		while (second != NULL)		{			if (k%2 == 0)			{				first->next = second->next;				second->next = first;				if(prev != NULL)//when process prev pointer, we should be very careful					prev->next = second;				else head = second;				ListNode* tmp = first;				first = second;				second = tmp;			}			prev = first;			first = second;			second = second->next;			k++;		}		return head;	}};

second time

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    void reverseList(ListNode* head, int k, ListNode*& reverseHead, ListNode*& reverseTail, ListNode*& nextHead)    {        reverseTail = head;        ListNode* prev = head;        ListNode* cur = head->next;        for(int i = 0; i < k-1; ++i)        {            if(cur == NULL) break;            ListNode* tmp = cur->next;            cur->next = prev;            prev = cur;            cur = tmp;        }        reverseHead = prev;        nextHead = cur;    }    ListNode *swapPairs(ListNode *head) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        ListNode dummy(-1);        ListNode* prev = &dummy;                ListNode* nextHead = head;        while(nextHead != NULL)        {            ListNode* reverseHead;            ListNode* reverseTail;            reverseList(nextHead, 2, reverseHead, reverseTail, nextHead);            prev->next = reverseHead;            prev = reverseTail;        }        prev->next = NULL;        return dummy.next;    }};

转载地址:http://khxti.baihongyu.com/

你可能感兴趣的文章
深入入门正则表达式(java) - 命名捕获
查看>>
使用bash解析xml
查看>>
android系统提供的常用命令行工具
查看>>
【Python基础1】变量和字符串定义
查看>>
【Python基础2】python字符串方法及格式设置
查看>>
【Python】random生成随机数
查看>>
【Python基础3】数字类型与常用运算
查看>>
Jenkins迁移jobs
查看>>
【Python基础4】for循环、while循环与if分支
查看>>
【Python基础5】列表和元组
查看>>
【Python基础6】格式化字符串
查看>>
【Python基础7】字典
查看>>
【Python基础8】函数参数
查看>>
【Python基础9】浅谈深浅拷贝及变量赋值
查看>>
Jenkins定制一个具有筛选功能的列表视图
查看>>
【Python基础10】探索模块
查看>>
【Python】将txt文件转换为html
查看>>
[Linux]Shell脚本实现按照模块信息拆分文件内容
查看>>
idea添加gradle模块报错The project is already registered
查看>>
在C++中如何实现模板函数的外部调用
查看>>