news 2026/1/14 22:33:39

算法学习 递归

作者头像

张小明

前端开发工程师

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/1/12 18:07:05

AI帮你做跨境!DeepBI助力亚马逊广告新手卖家实现质的飞跃

一、案例主角&#xff1a;亚马逊新手卖家的典型画像本次合作案例的主角&#xff0c;是一位从国内电商转型亚马逊的新手卖家&#xff0c;其身上有着该群体鲜明的定位与特点。该卖家怀揣拓展海外市场的热情&#xff0c;却对亚马逊平台运营经验近乎空白&#xff0c;尤其对站内广告…

作者头像 李华
网站建设 2026/1/12 13:37:41

LCD字模工具终极对比:3款神器如何选择?

LCD字模工具终极对比&#xff1a;3款神器如何选择&#xff1f; 【免费下载链接】三种取字模软件介绍 本开源项目提供三种高效实用的取字模软件&#xff1a;Img2Lcd、PCtoLCD2002和字模提取V2.2。这些工具专为液晶显示屏开发设计&#xff0c;能够将图像或字符转换为适合LCD显示的…

作者头像 李华
网站建设 2026/1/12 17:50:52

终极收藏版:2025年最值得合作的GEO公司推荐,技术实力大揭秘!

当生成式人工智能以势不可挡的姿态重塑全球搜索格局&#xff0c;生成式引擎优化&#xff08;GEO&#xff09;已从单一技术工具升级为企业战略转型的关键驱动力。据中国信息通信研究院最新统计&#xff0c;2025年国内GEO服务市场规模突破42亿元大关&#xff0c;年复合增长速率高…

作者头像 李华
网站建设 2026/1/11 21:28:51

QARM:多模态语义对齐与量化在推荐系统中的实践路径

一、传统多模态推荐的痛点 image 1.1 预训练 特征拼接&#xff1a;通行但有限的方案 业界通常采用两步式方案。首先使用多模态模型&#xff08;如 CLIP、T5、BEiT 等&#xff09;对文本、图像、音频特征进行预训练&#xff0c;生成固定向量表示。然后将该向量与推荐模型的 I…

作者头像 李华
网站建设 2026/1/12 23:06:18

AI 省钱双 buff:价格优化 + 优惠整合,省到实处

外卖网购&#xff0c;每月多花上百元&#xff1f;这份AI时代的省钱攻略&#xff0c;让你轻松节省生活开销你是否也有过这样的经历&#xff1a;月底一看账单&#xff0c;外卖和网购的开支远超预算&#xff0c;钱就像流水一样&#xff0c;不知不觉就花出去了。一顿外卖动辄三四十…

作者头像 李华
网站建设 2026/1/13 12:34:57

用1/10的成本跑RAG?向量压缩+模型蒸馏+智能缓存实战指南

一、引言&#xff1a;大模型时代&#xff0c;成本成了新瓶颈 随着RAG&#xff08;Retrieval-Augmented Generation&#xff09;系统在企业级应用中的普及&#xff0c;推理成本和存储开销正成为技术团队不可忽视的挑战。一个典型的RAG链路涉及Embedding模型调用、向量数据库检索…

作者头像 李华