博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swap Nodes in Pairs leetcode
阅读量:6825 次
发布时间:2019-06-26

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

Given a linked list, swap every two adjacent nodes and return its head.

For example,

Given 1->2->3->4, you should return the list as 2->1->4->3.

Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

 

 to see which companies asked this question

 
未优化的代码,用3个临时指针
ListNode* swapPairs(ListNode* head) {    if (head == nullptr || head->next == nullptr)        return head;    ListNode *pre = head;    ListNode *cur = pre->next;    ListNode *net = cur->next;    head = cur;    while (true)    {        cur->next = pre;        if (net == nullptr || net->next == nullptr) {            pre->next = net;            break;        }                pre->next = net->next;        pre = net;        cur = pre->next;                net = cur->next;        }    return head;}

 

惊人的解法,用双重指针,开阔思路,本以为自己可以随心所欲使用双指针,看来还是差得远

ListNode *swapPairs(ListNode *head) {    ListNode **p = &head;    while (*p && (*p)->next) {        ListNode *t = (*p)->next;        (*p)->next = t->next;        t->next = *p;        *p = t;        p = &(*p)->next->next;    }    return head;}

 

转载于:https://www.cnblogs.com/sdlwlxf/p/5122770.html

你可能感兴趣的文章
UVa11181 条件概率
查看>>
第一个Polymer应用 - (3)使用数据绑定
查看>>
<Linux> xm 命令
查看>>
linux 常用命令
查看>>
ecna 2017 J Workout for a Dumbbell (模拟)
查看>>
用Quick3.3开发微信打飞机 (二) -------------------- 子弹和敌人的配置和创建
查看>>
Tui-x 自适应屏幕 (转) ----- 6
查看>>
[转载] C#中的委托和事件(续)
查看>>
PHP系统编程--多进程与多线程
查看>>
解题思路
查看>>
AngularJS - Apply方法监听model变化
查看>>
linux_密钥
查看>>
silverlight 添加配置项
查看>>
oracle数据库迁移相关
查看>>
Linux之 VIM 编辑器
查看>>
实用网址集合
查看>>
【转】移动web资源整理
查看>>
【Linux】CentOS7下安装JDK详细过程
查看>>
Android 录音
查看>>
有关集合的foreach循环里的add/remove
查看>>