511.Swap Two Nodes in Linked List-交换链表当中两个节点(中等题)

C语言实现链表基本操作(交换第i个和第j个节点) #include <stdio.h> #include <malloc.h> typedef struct node { char ID[20]; int Score; struct node * Next; }Node, * List; void Insert(List *L, Node e) { List temp = *L; List n = (List)malloc(sizeof(Node)); n->Score = 阅读详情

交换链表当中两个节点

  1. 题目

    给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。

    注意事项
    你需要交换两个节点而不是改变节点的权值

  2. 样例

    给出链表 1->2->3->4->null ,以及 v1 = 2 , v2 = 4
    返回结果 1->4->3->2->null。

  3. 题解

    基本的链表题,需注意两个节点相邻的问题。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    /**
     * @param head a ListNode
     * @oaram v1 an integer
     * @param v2 an integer
     * @return a new head of singly-linked list
     */
    public ListNode swapNodes(ListNode head, int v1, int v2) {
        // Write your code here
        if (head == null || head.next == null || v1 == v2)
        {
            return head;
        }

        ListNode newHead  = new ListNode(1);
        newHead.next = head;
        ListNode result = newHead;
        ListNode v1Pre = null;
        ListNode v2Pre = null;
        while (newHead.next != null)
        {
            if (newHead.next.val == v1 || newHead.next.val == v2)
            {
                if (v1Pre == null)
                {
                    v1Pre = newHead;
                }
                else
                {
                    v2Pre = newHead;
                    ListNode v1Node = v1Pre.next;
                    ListNode v2Node = v2Pre.next;
                    ListNode temp = v2Pre.next.next;
                    //v1,v2是否相邻
                    boolean b = (v1Node.next == v2Node);
                    v1Pre.next = v2Pre.next;
                    if (b)
                    {
                        v2Node.next = v1Node;
                    }
                    else
                    {
                        v1Pre.next.next = v1Node.next;
                        v2Pre.next = v1Node;
                    }
                    v1Node.next = temp;
                    break;
                }
            }
            newHead = newHead.next;
        }

        return result.next;
    }
}

Last Update 2016.11.19

从STM32转战STC32G?逐飞开源库帮你快速上手GPIO、PWM与ADC(避坑指南) 本文详细介绍了从STM32迁移到STC32G32K128的开发实践,重点解析了GPIO、PWM和ADC等基础外设的设计差异,并提供了基于逐飞开源库的高效应用方案。通过对比两种平台的开发工具和操作方式,帮助开发者快速上手STC32G,避免常见陷阱,提升开发效率。 阅读详情

相关推荐

TikTok达人私信自动化:用Node.js和纯JavaScript实现WSS协议通信(附完整代码结构)

本文详细介绍了如何使用Node.js和WSS协议实现TikTok达人私信自动化系统。通过分层架构设计、WSS连接管理、消息加密策略及频率控制,开发者可以构建稳定高效的私信工具,突破平台API限制,适用于跨境电商和社交媒体运营场景。

weixin_30352645的博客 519

交换链表中的两个结点

题目: 给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。 注意:你需要交换两个节点而不是改变节点的权值 样例: 给出链表 1-&gt;2-&gt;3-&gt;4-&gt;null ,以及 v1 = 2 , v2 = 4 返回结果 1-&gt;4-&gt;3-&gt;2-&...

线上幽灵 1万+

基于Java+Maven+Testng+RestAssured+Allure+Jenkins搭建一个接口自动化框架

2、有一个提取表达式列,通过编写每个接口的JSON提取表达式,后边在解析Excel时,对接口执行后的响应数据用该表达式提取出来,保存到环境变量,如果某些接口需要前置接口的响应数据,我们就可以从环境变量中获取该数据出来,从而解决了接口关联的问题。1、在之前介绍过全局配置类Contants中添加一个控制台日志开关控制权限,如果选择为false,则控制台不输出日志,将日志输出到allure报表,选择为true,则在控制台输出日志,不输出到allure报表。

专注于技术分享的博主 1183

链表篇:24.两两交换链表中的节点

代码随想录:链表篇:24.两两交换链表中的节点

qq_58719130的博客 983

rfid标签技术原理

奇怪的是,RFID标签技术原理的深入剖析不仅揭示了其背后的奥秘,也让我们更加全面地认识到这一技术在数字化转型中的重要性和潜力。随着技术的不断进步和应用场景的不断拓展,RFID标签将在更多领域发挥重要作用,为物联网、智能制造等领域的发展注入新的活力。这意味着在一个读写器的覆盖范围内,可以同时读取多个RFID标签的数据,大大提高了数据收集的速度和效率。:RFID标签的“大脑”,负责存储和处理数据。芯片内部集成了存储器、控制逻辑和射频接口等电路,能够接收来自读写器的射频信号,执行相应的数据处理和通信任务。

x3088的博客 2159

AUTOSAR FEE 换页机制深度解析:从原理到实现逻辑

​​没有磨损均衡的EEPROM模拟,如同在沙地上建造城堡​​ ——AUTOSAR存储系统设计箴言

汽车电子软件领域知识分享 1338

【力扣算法19】之 24. 两两交换链表中的节点 python

在不修改节点内部值的情况下,给定一个链表,要求对其中相邻的节点进行两两交换,并返回交换后的链表头节点。本文通过递归的方法解决了这个问题。首先检查链表是否为空或只有一个节点,如果是,则无需交换,直接返回原链表。然后定义prev和cur两个指针,分别指向要交换的两个节点。将prev的next指针指向cur的next节点,即将第一个节点的后继指针指向第三个节点;将cur的next指针指向prev,完成节点的交换。接着递归处理剩余部分的链表,并将返回的结果赋值给prev.next,连接交换后的节点

全栈若城,专注知识分享 1177

快速理解OSI七层模型(举例理解,数据传输过程,深入理解OSI七层模型)

我们需要了解互联网的本质是一系列的网络协议,这个协议就叫做OSI协议(开放系统互联(Open System Interconnection)),它是由ISO(国际标准化组织)定义的。 需要注意,随着时代的发展,OSI已经被TCP/IP 4层模型淘汰,在当今世界上并没有大规模的使用。 那么对于OSI,人们按照功能不同,分工不同,人为的将OSI的分为七层。实际上这七层是并不存在的,也就是说没有这些概念,而我们今天提到的七层概念,只是人为的划分而已。目的只是为了让大家更好地理解这些都是用来做什么的。

CN_TangZheng的博客 3万+

详解两两交换链表中的节点

链表交换两个节点

abc123mma的博客 2090

S32K144 ADC硬件触发实战:PDB与TRGMUX配置避坑指南

本文深入解析了S32K144微控制器中ADC硬件触发的两种核心方案:PDB与TRGMUX。通过对比其架构差异、详细配置流程及常见问题排查,提供了从寄存器操作到DMA联动的完整优化指南,旨在帮助开发者解决多通道采样时序不稳、CPU负载过高等实际难题,实现高效稳定的数据采集。

weixin_29168153的博客 440

北斗导航 | SPP、RTK、RTD、PPP-RTK、PPP算法原理,公式及完整matlab代码

开发参考:SPP适合入门学习GNSS定位原理和最小二乘。RTK是工程高精度定位主流方案,但依赖基站。PPP适合无基站区域的广域高精度应用。PPP-RTK是融合两者优点的新一代技术,但系统复杂度最高。· 代码资源:raPPPid(VieVS PPP)是功能完整的MATLAB开源PPP工具箱,支持多系统PPP-AR。MATLAB GPS Toolbox 提供从SPP到PPP的完整功能实现。· 实际应用:农业自动驾驶、无人机航测通常使用网络RTK;大地测量、地壳形变监测常采用PPP事后处理;

尘世冰封的专栏 822

【一起来刷题】链表操作问题之两两交换链表中的节点

(5)通过以上几步,我们将1和2交换了位置。这是一道中等题,但是是链表的常规操作题,需要对链表结构足够熟悉,就能轻松解答。推荐解题前,自己画个简图,然后一步一步改变节点连接,一目了然。(2)接下来就开始调整两个节点的指向。Ok,第一轮交换完成。后续操作就是重复上述步骤即可。更多精彩文章,欢迎大家关注我,一起学习,一起进步~

尚拙的博客 1362

vscode 配置 codeql

vscode 配置 codeql

SHELLCODE_8BIT的博客 1439

交换链表当中两个节点

交换链表当中两个节点 题目: 描述 给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。 你需要交换两个节点而不是仅仅交换节点的权值 样例 样例 1: 输入: 1->2->3->4->null, v1 = 2, v2 = 4 输出: 1->4->3->2->null 样例 2: 输入: 1->null, v1 = 2, v2 = 1 输出: 1->null

KobeSacre的博客 1697

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C++ 单链表节点交换

这里提供两种方法,一种是只交换对应的数据,另一种是通过更改指针来交换节点。而更改指针中又可以分为新建节点与不新建节点的方法。

White--Night的博客 2721

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

lintcode--511. 交换链表当中两个节点

描述 给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。 你需要交换两个节点而不是改变节点的权值 样例 给出链表 1-&gt;2-&gt;3-&gt;4-&gt;null ,以及 v1 = 2 , v2 = 4 返回结果 1-&gt;4-&gt;3-&gt;2-&gt;null。 代码 根据给...

second24的博客 562

24.两两交换链表中的节点

两两交换链表中的节点 难度 中等 题目 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例1 输入:head = [1,2,3,4] 输出:[2,1,4,3] 示例2 输入:head = [] 输出:[] 示例3 输入:head = [1] 输出:[1] 解题思路:改变指针指向来交换节点 解法1:递归:此题可使用递归方法,定义指针head指向原链表的头节点(新链表的第二个节点),newhead=head.next指

幸运星啦啦啦的博客 381

Unity 在list内部交换片段

功能实现目标:最近项目中遇到的一个需求,要求在list中索引为index的位置,index后的片段换到前面,index前的移到前面,也就是从index的位置前后交换。 例如:A B C D E F 从索引为3的位置开始交换片段,交换后变为D E F A B C ok,代码实现如下: /// <summary> /// 交换list的某个片段 /// </summary> /// <typeparam name="T"></typeparam&

Ryker的博客 1011

LeetCode - 1721 - 交换链表中的节点 - Java - 两种解法

阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了1、JAVA面试核心知识整理(PDF):包含JVMJAVA集合JAVA多线程并发,JAVA基础,Spring原理微服务,Netty与RPC,网络,日志,ZookeeperKafkaRabbitMQ,Hbase,MongoDB设计模式负载均衡数据库一致性哈希JAVA算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。2、Redis学习笔记及学习思维脑图。

2401_84009130的博客 487

【简单实用框架】【十大排序算法直接调用】【可移植】

九个排序静态算法,工程中直接取用

qq_42555291的博客 1111

两两交换链表中的节点

两两交换链表中的节点。输出:2 1 4 3。

活到老、学到老 1066

python 实现链表交换节点算法

链表交换节点是一个常见的操作,尤其在实现某些特定算法(如链表排序、链表反转的部分步骤)时非常有用。这里,我们将讨论几种不同情境下链表节点交换的算法。

luthane的博客 613

算法_交换链表中的节点

给定⼀个链表,两两交换其中相邻的节点(不交叉),并返回交换后的链表。你不能只是单纯的改变节点内部的值,⽽是需要。原链表:1->2->3->4输出链表:2->1->4->3。

weixin_55955132的博客 728

Python实现两两交换链表中的节点

题目描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 Leetcode原题地址:https://leetcode-cn.com/problems/swap-nodes-in-pairs/ 测试用例 示例1 输入:head = [1,2,3,4] 输出:[2,1,4,3] 示例2 输入:head = [] 输出:[] 示例3 输入:head = [1] 输出:[1] 代码实现 遍历链表 我们需要两两交

修炼之路 2460

交换链表中两个节点

给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。  注意事项 你需要交换两个节点而不是改变节点的权值 样例 给出链表 1->2->3->4->null ,以及 v1 = 2 , v2 = 4 返回结果 1->4->3->2->null。 import java.util.Scan

wwe4023的博客 1226

511- 交换链表当中两个节点

2017.9.7 链表的东西本来不难,难得是需要后期维护链表。 需要格外注意头结点和尾节点。 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x

Missbubu的博客 380

lintcode-交换链表当中两个节点

一.题目描述 给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。 https://www.lintcode.com/problem/511/description 二.代码 public ListNode swapNodes(ListNode head, int v1, int v2) { if (head == null || head.next == null) {

pubgNO1的博客 150
上一篇: 507.Wiggle Sort II-摆动排序 II(中等题)
下一篇: 436.Maximal Square-最大正方形(中等题)
普通网友
博客等级 码龄11年 12粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值