辽宁省城乡住房建设厅网站建设银行网站怎么登陆密码忘了怎么办
2026/3/4 20:00:46 网站建设 项目流程
辽宁省城乡住房建设厅网站,建设银行网站怎么登陆密码忘了怎么办,分布式wordpress,h5模板免费递归解法详解题目要求两两交换链表中的相邻节点#xff0c;且不能修改节点的值#xff0c;只能交换节点本身。递归方法通过分解问题为子问题来实现。递归思路 将链表的前两个节点视为node1和node2#xff0c;交换这两个节点后#xff0c;node1的下一个节点应指向剩余链表交…递归解法详解题目要求两两交换链表中的相邻节点且不能修改节点的值只能交换节点本身。递归方法通过分解问题为子问题来实现。递归思路将链表的前两个节点视为node1和node2交换这两个节点后node1的下一个节点应指向剩余链表交换后的头节点。递归终止条件是链表为空或只有一个节点。代码实现Cclass Solution { public: ListNode* swapPairs(ListNode* head) { if (head nullptr || head-next nullptr) { return head; } ListNode* newHead head-next; head-next swapPairs(newHead-next); newHead-next head; return newHead; } };执行流程示例输入链表1 → 2 → 3 → 4第一次递归head1newHead2递归处理3。第二次递归head3newHead4递归处理nullptr返回nullptr。连接子链表结果3-nextnullptr4-next3返回4。最终连接1-next42-next1返回2结果为2→1→4→3。复杂度分析时间复杂度$O(n)$每个节点处理一次。空间复杂度$O(n)$递归栈深度为$n/2$。迭代解法补充迭代思路使用指针遍历链表每次交换相邻两个节点并更新指针位置。代码实现Cclass Solution { public: ListNode* swapPairs(ListNode* head) { ListNode dummy(0); dummy.next head; ListNode* prev dummy; while (prev-next prev-next-next) { ListNode* first prev-next; ListNode* second first-next; prev-next second; first-next second-next; second-next first; prev first; } return dummy.next; } };执行流程初始化虚拟头节点dummyprev指向dummy。循环中交换first和second节点更新prev-next和first-next。移动prev到first继续处理下一对节点。复杂度分析时间复杂度$O(n)$遍历链表一次。空间复杂度$O(1)$仅使用常数空间。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询