leetcode 题解 || Swap Nodes in Pairs 问题[通俗易懂]

leetcode 题解 || Swap Nodes in Pairs 问题

大家好,又见面了,我是全栈君。

problem:

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.

在单链表中。每两个结点交换一下位置。单个的不交换

thinking:

leetcode 题解 || Swap Nodes in Pairs 问题[通俗易懂]

(1)这道题在不新建结点的情况下。指向关系复杂。慢慢分析

(2)head是头指针,指向第一个有效结点!

code:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *swapPairs(ListNode *head) {
        ListNode *index = head;
        ListNode *pre = NULL;
        ListNode *tmp = NULL;
        ListNode *modify = head;;
        int i=0;
        if(head==NULL||head->next==NULL)
            return head;
        while((index!=NULL)&&(index->next!=NULL))
        {
            i++;
            pre=index;
            if(i==1)
            {
                head=pre->next; 
                index = index->next;
                tmp = index->next;
                pre->next = tmp;
                index->next = pre;
                index=tmp;
                modify=pre;
            }
            else
            {
                index = index->next;
                tmp = index->next;
                modify->next=pre->next;
                pre->next = tmp;
                index->next = pre;
                index=tmp;
                modify=pre;
            
            }
           
                
        }
        return head;
    }
};

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115548.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月2日 下午10:00
下一篇 2022年2月2日 下午10:00


相关推荐

  • Velocity语法大全

    Velocity语法大全一、基本语法 1、”#”用来标识Velocity的脚本语句,包括#set、#if、#else、#end、#foreach、#end、#iinclude、#parse、#macro等; 如: #if($info.imgs) <imgsrc=”$info.imgs”border=0> #else <imgsrc=”noPhoto.jpg”> #end2、”$”用来标识一个对象(或理解为…

    2022年7月14日
    17
  • RIP路由

    RIP路由

    2021年8月31日
    60
  • func_get_args()在php71与php56的区别

    func_get_args()在php71与php56的区别

    2021年11月6日
    40
  • mysql分页的limit参数「建议收藏」

    Mysql的分页的两个参数select*fromuserlimit1,21表示从第几条数据开始查(默认索引是0,如果写1,从第二条开始查)2,表示这页显示几条数据

    2022年4月15日
    52
  • tensorflow各个版本的CUDA以及Cudnn版本对应关系

    tensorflow各个版本的CUDA以及Cudnn版本对应关系概述,需要注意以下几个问题:(1)NVIDIA的显卡驱动程序和CUDA完全是两个不同的概念哦!CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用。CUDA的本质是一个工具包(ToolKit);但是二者虽然不一样的。显卡驱动的安装:当我们使用…

    2022年6月9日
    29
  • 解决VS控制台窗口自动关闭的问题

    解决VS控制台窗口自动关闭的问题方法一 Ctrl F5 如果你的项目创建时选择的是 Win32 控制台应用程序 那么使用 Ctrl F5 运行程序就可以了 如果你选的是 空项目 你需要修改项目属性 才能让这个方法生效 方法二 设置断点在代码结束或返回前设置断点 方法三 system pause 在代码结束或返回前加一句话 system pause 需要头文件 includestdli h

    2026年3月17日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号