技术标签: 算法 java 链表 leetcode 指针 LeetCode
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
}
}
示例
输入:head = [1,2,3,4]
输出:[2,1,4,3]
可以使用递归来解决本题
两两交换链表中的节点,拿第一个节点头节点head与第二个节点newHead(newHead = head.next) 来讲,需要将head与newHead交换位置,使newHead变成链表中的头节点,head变成第二个节点,然后head再指向已经处理好的链表,
以此类推,递归调用本身,直到最后只剩下一个节点或者为空,结束返回新的头指针,也就是newHead
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode newHead = head.next;
head.next = swapPairs(newHead.next);
newHead.next = head;
return newHead;
}
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://mp.csdn.net/mdeditor/102797801如上图所示,idea启动debug模式,idea的debug窗口被我不小心操作,变成了独立的debug窗口,并且点其他的按钮都回不去,这就很不开心了。解决方法:如下图在标红的位置右键,右键效果如下图...
在各个年龄段的程序猿中,70后以年龄优势遥遥领先,80后开始油腻,90后开始掉发,掉发的迅猛程度隐隐有赶超80后的趋势,脱单已然不是他们最担心的问题,脱发才是!程序猿敲掉不不光是键盘上的字母,更是头顶上原本可怜兮兮的头发……曾经小鲜肉如今变成了“地中海大叔”。双十一过后,苏宁IT基于内部500名程序员的头发分析,正式对外发布了“脱发”大数据。更是为6000+程序猿享受了一场特殊的保健服务——发...
本文目录前言GestureDetector基本用法常用事件监听事件实现缩放监听事件实现拖拽前言在Flutter开发App的过程中,我们除了需要灵活的使用各种组件之外,还需要掌握手势的识别,比如我们常常需要在操作App的时候使用到缩放,双击,放大,缩小等操作,这些Flutter都给我们提供了监听的组件GestureDetector。这篇博文将详细介绍GestureDetector手势识别的使用规...
package com.hzjw.common;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.io.OutputStream;import j
[[email protected] ~]$ pip install --upgrade pipCache entry deserialization failed, entry ignoredCollecting pip Downloading https://pypi.doubanio.com/packages/62/ca/94d32a6516ed197a491d17d46595c...
/*对所有的边进行n-1次的松弛操作检测一个图是否有负权回路:如果在n-1松弛之后最短路仍然会发生变化,则改图必然存在负权回路在实际操作中,Bellman-Ford算法经常会在未达到n-1轮松弛前就已经计算出最短路,n-1其实是最大值因此可以添加一个变量check用来标记数组dis在本轮松弛中是否发生了变化,如果没有发生变化,则可以提前跳出循环*/#include "stdio.h"i...
安装要求:CPU,1GMHz以上 内存,1G以上 硬盘,安装系统后建议10G空闲空间1、检查和安装必要的软件包: binutils-2.17.5...
• Transient Setup – This workshop discusses basic setup details of 2D Magnetic Transient solver –本研讨会讨论2D电磁瞬态求解器的基本设置细节 – The transient setup is described with two different excit...
第一步需要在配置文件的activity中添加配置文件android:configChanges="locale|layoutDirection|keyboard"第二步需要在有dialog.show得地方做一下判断if (loadingDialog != null && !((BaseActivity)mContext).isFinishing()) { l...
经常遇到一种经常替换字符串的操作,有一个文本,将里面的所有符合条件的字符串替换为另一个字符串。而且可能同时需要替换多个这样的字符串。使用文本处理工具,比如sublime,vi等等也可以很方便地实现。这里给出一个java版本的实现,给出的是核心实现,如果实现全自动的话,还需要读者进一步封装。package cn.ancony.os.replace;import java.util.Ha...
在角1.2.X有很多方法可以做到这一点。在角度1.2中,我建议使用http interceptor“擦除”传出请求并添加标题。// An interceptor is just a service.app.factory('myInterceptor', function($q) {return {// intercept the requests on the way out.request: ...
背景前几天在做数据表分库逻辑,需要前端传入dbName实现自由选择数据源的分库逻辑。本打算集成MyBatis-Plus提供的dynamic-datasource工具包,但是数据源配置都写死在了yml里,而公司的项目是基于微服务的,配置类都统一访问远程配置中心获取,于是只能利用AOP在service层做拦截,自己造轮子实现分库逻辑,过程如下:1、注册多数据源:@[email protected]("classpath:mybatis/spring-mybatis.xml"