news 2026/7/8 10:02:02

算法学习 递归

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法学习 递归

1.合并两个有序链表

将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []输出:[]

示例 3:

输入:l1 = [], l2 = [0]输出:[0]
/** * 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 mergeTwoLists(ListNode list1, ListNode list2) { if(list1==null){ return list2; } else if(list2==null){ return list1; }else if(list1.val<list2.val){ list1.next = mergeTwoLists(list1.next,list2); return list1; }else{ list2.next = mergeTwoLists(list1,list2.next); return list2; } } }

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

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:

输入:head = [1,2,3,4]输出:[2,1,4,3]

示例 2:

输入:head = []输出:[]

示例 3:

输入:head = [1]输出:[1]
/** * 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; // } // // cur 是当前链表中第二个节点(交换后会成为新的头节点) // ListNode cur = head.next; // // 递归处理 cur.next 开始的剩余链表,返回的结果作为原头节点的后继 // head.next = swapPairs(cur.next); // // 交换当前两个节点:cur 指向原头节点 head // cur.next = head; // // 返回交换后的新头节点 cur // return cur; //非递归 ListNode pre = new ListNode(0);//定义一个虚拟头结点 pre.next = head; ListNode temp = pre; while(temp.next!=null&&temp.next.next!=null){ ListNode start = temp.next; ListNode end = temp.next.next; temp.next = end; // 步骤1:前驱节点指向第二个节点 start.next = end.next; // 步骤2:第一个节点指向第二个节点的后继 end.next = start; // 步骤3:第二个节点指向第一个节点 temp = start; // 步骤4:移动temp到交换后的第一个节点(下一轮的前驱) } return pre.next; } }

3.重排链表

给定一个单链表L的头节点head,单链表L表示为:

L0 → L1 → … → Ln - 1 → Ln

请将其重新排列后变为:

L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …

不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例 1:

输入:head = [1,2,3,4]输出:[1,4,2,3]

示例 2:

输入:head = [1,2,3,4,5]输出:[1,5,2,4,3]
/** * 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 void reorderList(ListNode head) { if(head==null||head.next==null||head.next.next==null){ return; } // 找到倒数第二个节点(prev)和最后一个节点(tail) ListNode prev = head; while(prev.next.next!=null){ prev=prev.next; } ListNode tail = prev.next; //断开连接 prev.next=null; //保留下一个节点 ListNode nextNode = head.next; head.next=tail; tail.next = nextNode; //递归 reorderList(nextNode); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 2:30:40

时空低空经济数据安全与合规应用

引言&#xff1a;低空经济&#xff0c;一场关乎未来的深空竞赛低空经济绝非昙花一现&#xff0c;而是一场面向未来的战略竞赛。随着无人机物流、城市空中交通&#xff08;UAM&#xff09;、应急救援等场景爆发式增长&#xff0c;2025年低空经济规模预计突破万亿。然而&#xff…

作者头像 李华
网站建设 2026/7/7 18:15:06

如何高效使用SenseVoice:AI语音识别的终极实战指南

如何高效使用SenseVoice&#xff1a;AI语音识别的终极实战指南 【免费下载链接】SenseVoice Multilingual Voice Understanding Model 项目地址: https://gitcode.com/gh_mirrors/se/SenseVoice SenseVoice是一个先进的多语言语音理解模型&#xff0c;专注于AI语音处理和…

作者头像 李华
网站建设 2026/7/7 14:41:33

DataV Vue3:终极数据可视化组件库完整指南

DataV Vue3&#xff1a;终极数据可视化组件库完整指南 【免费下载链接】datav-vue3 datav Vue3TSVite版 项目地址: https://gitcode.com/gh_mirrors/dat/datav-vue3 在现代Web开发中&#xff0c;数据可视化已经成为不可或缺的核心能力。DataV Vue3TSVite版作为一款基于V…

作者头像 李华
网站建设 2026/7/1 17:11:24

测试环境配置与虚拟化技术:构建高效、可靠的质量保障基石

测试环境的现代挑战与虚拟化技术的机遇 在当代软件工程实践中&#xff0c;测试环境的质量与效率直接关系到产品发布的节奏与质量。对于软件测试从业者而言&#xff0c;一个稳定、可重复、隔离的测试环境不再是“锦上添花”&#xff0c;而是保障测试活动有效性的“必需品”。然…

作者头像 李华
网站建设 2026/7/6 12:32:30

Element UI图标系统终极指南:从架构设计到企业级扩展方案

Element UI图标系统终极指南&#xff1a;从架构设计到企业级扩展方案 【免费下载链接】element A Vue.js 2.0 UI Toolkit for Web 项目地址: https://gitcode.com/gh_mirrors/eleme/element 在Vue.js企业级开发中&#xff0c;图标系统的选择往往成为项目效率与维护性的关…

作者头像 李华