链表经典面试题(四)
作者:小教学发布时间:2023-10-02分类:程序开发学习浏览:108
导读:分割链表1.题目2.详细的图文分析3.详细的注释和代码1.题目2.详细的图文分析我们会定义4个指向分割链表的指向指针,分别来表示两个链表的头和...
分割链表
- 1.题目
- 2.详细的图文分析
- 3.详细的注释和代码
1.题目
2.详细的图文分析
我们会定义4个指向分割链表的指向指针,分别来表示两个链表的头和尾
并且将数据一一的放到两个链表中,最后再将它们串起来,代码中有详细注释.
3.详细的注释和代码
public class Partition {
public ListNode partition(ListNode head, int x) {
if(head == null){
return null;
}
//定义一个cur,用来遍历链表
ListNode cur = head;
//定义4个指向指针,来指向分割的链表
ListNode bs = null;
ListNode be = null;
ListNode as = null;
ListNode ae = null;
//用cur来遍历链表
while(cur != null){
if(cur.val < x){
//我们用be,bs来指向小于x的链表
//用ae,as来指向大于x的链表
//如果bs为空的话
if(bs == null){
bs = cur;
be = cur;
}
else{
be.next = cur;
be = be.next;
}
}
else{
//如果as为空
if(as == null){
as = cur;
ae = cur;
}
else{
ae.next = cur;
ae = ae.next;
}
}
cur = cur.next;
}
//出循环后,说明cur为空了,走完了整个链表
//我们需要将两个分割的链表串联起来
//1.如果特殊情况下,bs为空
if(bs == null){
return as;
}
//如果没走if,说明bs里面有数据
be.next = as;
//2.如果as不为空
if(as != null){
//保证链表的最后一个数据的next域为空
ae.next = null;
}
return bs;
}
}
分割链表的题目非常难,需要各位好好考虑清楚各种情况,希望大家好好看博主的图和代码,数据结构不画图的话是学不会的
标签:链表经典面试题(四)
- 程序开发学习排行
-
- 1鸿蒙HarmonyOS:Web组件网页白屏检测
- 2HTTPS协议是安全传输,为啥还要再加密?
- 3HarmonyOS鸿蒙应用开发——数据持久化Preferences
- 4记解决MaterialButton背景颜色与设置值不同
- 5鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
- 6鸿蒙HarmonyOS实战-ArkUI组件(Stack)
- 7鸿蒙HarmonyOS实战-ArkUI组件(GridRow/GridCol)
- 8[Android][NDK][Cmake]一文搞懂Android项目中的Cmake
- 9鸿蒙HarmonyOS实战-ArkUI组件(mediaquery)
- 最近发表
-
- WooCommerce最好的WordPress常用插件下载博客插件模块的相关产品
- 羊驼机器人最好的WordPress常用插件下载博客插件模块
- IP信息记录器最好的WordPress常用插件下载博客插件模块
- Linkly for WooCommerce最好的WordPress常用插件下载博客插件模块
- 元素聚合器Forms最好的WordPress常用插件下载博客插件模块
- Promaker Chat 最好的WordPress通用插件下载 博客插件模块
- 自动更新发布日期最好的WordPress常用插件下载博客插件模块
- WordPress官方最好的获取回复WordPress常用插件下载博客插件模块
- Img to rss最好的wordpress常用插件下载博客插件模块
- WPMozo为Elementor最好的WordPress常用插件下载博客插件模块添加精简版