news 2026/10/23 2:57:38

Leetcode 链表,树,回溯 模板

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Leetcode 链表,树,回溯 模板

链表

/反转链表 迭代 ListNode reverseList(ListNode head) { ListNode prev = null, cur = head; while (cur != null) { ListNode next = cur.next; // 1. 先存下一个,防断链 cur.next = prev; // 2. 反转当前指针 prev = cur; // 3. prev 前进 cur = next; // 4. cur 前进 } return prev; // prev 是新头 } 递归 ListNode reverseList(ListNode head) { if (head == null || head.next == null) return head; ListNode newHead = reverseList(head.next); // 先反转后面 head.next.next = head; // 让后一个节点指回自己 head.next = null; // 断开原方向,防成环 return newHead; } /快慢指针 ListNode slow = head, fast = head; while (fast != null && fast.next != null) { slow = slow.next; fast = fast.next.next; } return slow; } boolean hasCycle(ListNode head) { ListNode slow = head, fast = head; while (fast != null && fast.next != null) { slow = slow.next; fast = fast.next.next; if (slow == fast) return true; // 相遇 } return false; } 虚拟dummy ListNode dummy = new ListNode(0); dummy.next = head; ListNode cur = dummy; // ... 操作 ... return dummy.next; // 真正的头可能被改,返回 dummy.next

二叉树DFS

/二叉树递归骨架 // 104 最大深度:分解型,f(node) = max(f(left), f(right)) + 1 int maxDepth(TreeNode root) { if (root == null) return 0; return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; } // 226 翻转二叉树:遍历型,交换左右子树后递归 TreeNode invertTree(TreeNode root) { if (root == null) return null; TreeNode left = invertTree(root.left); // 先递归翻转 root.left = invertTree(root.right); root.right = left; return root; } /直径与 LCA // 543 直径:后序,每个节点算「左深+右深」更新全局最大,返回自身深度 int ans = 0; int diameter(TreeNode root) { if (root == null) return 0; int l = diameter(root.left), r = diameter(root.right); ans = Math.max(ans, l + r); // 经过该节点的最长路径 return Math.max(l, r) + 1; // 向上返回深度 } // 236 最近公共祖先:后序,左右各找到一个目标则当前节点即 LCA TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if (root == null || root == p || root == q) return root; TreeNode left = lowestCommonAncestor(root.left, p, q); TreeNode right = lowestCommonAncestor(root.right, p, q); if (left != null && right != null) return root; // p、q 分居两侧 return left != null ? left : right; // 都在同一侧 }

回溯

/回溯通用框架 List<List<Integer>> res = new ArrayList<>(); void backtrack(int[] nums, List<Integer> path, boolean[] used) { if (path.size() == nums.length) { // 结束条件:选满了 res.add(new ArrayList<>(path)); // 注意:必须 new 一份拷贝 return; } for (int i = 0; i < nums.length; i++) { // 遍历选择列表 if (used[i]) continue; // 跳过已选 path.add(nums[i]); used[i] = true; // 【做选择】 backtrack(nums, path, used); // 递归下一层 path.remove(path.size() - 1); used[i] = false; // 【撤销选择】 } } /排列 / 组合/子集 // 组合/子集:用 start 控制起点,避免重复选(顺序无关) void backtrack(int[] nums, int start, List<Integer> path) { res.add(new ArrayList<>(path)); // 子集:每个节点都是答案 for (int i = start; i < nums.length; i++) { path.add(nums[i]); backtrack(nums, i + 1, path); // 传 i+1,不回头 path.remove(path.size() - 1); } } /含重复元素去重 Arrays.sort(nums); // 先排序,让相同元素相邻 void backtrack(int[] nums, int start, boolean[] used, List<Integer> path) { // ...收集答案... for (int i = start; i < nums.length; i++) { // 同一层里,跳过重复元素(前一个相同值没被用,说明同层已处理过) if (i > start && nums[i] == nums[i-1]) continue; if (used[i]) continue; // 做选择 / 递归 / 撤销 } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 2:57:32

Agent Harness 深度解析:模型决定下限,骨架决定上限

这是「近五年 AI 技术演进」系列深挖的最后一篇&#xff0c;第十三篇。前十二篇各拆了一个零件——提示词、检索、工具、协议、编排、技能、规矩、记忆、沙箱。这一篇不再拆新零件&#xff0c;而是把它们装回去&#xff1a;为什么这些零件必须长在一起&#xff0c;才叫一个 Age…

作者头像 李华
网站建设 2026/10/23 2:56:44

门店收款码的三种模式,选哪种取决于两件事

收银台上贴的那张收款码&#xff0c;顾客扫码时看不出任何区别。但这张码背后绑的是谁的商户号&#xff0c;决定了三件很实际的事&#xff1a;钱进谁的账户、退款从哪个账户出、发票由谁开。不少品牌在门店开到十几家之后才发现&#xff0c;这三件事一开始就没想过。收款码常见…

作者头像 李华
网站建设 2026/10/23 2:55:09

第 4 讲 直流电源与电子负载深度实战:原理・参数・测试方法・自动化测试全解析

专栏:《电路故障诊断与性能测试从入门到精通:工具・参数・公式・实战》 本文为付费专栏第 4 篇,全文约 9500 字,从电源核心参数的底层推导到电子负载反馈原理,从标准化测试流程到 Python 自动化测试系统,彻底讲透电源性能测试的完整方法论。 1. 开篇:为什么你的电源总是…

作者头像 李华
网站建设 2026/10/23 2:54:04

RHCSA复习

1.基础文件和目录操作(1). 在用户主目录下创建一个名为test_dir的目录&#xff0c;并在该目录中创建一个名为test_file.txt的空文本文件。[rootserver]# mkdir /text_dir [rootserver]# touch /test_dir/test_file.txt(2). 将test_file.txt文件复制到/tmp目录下&#xff0c;并将…

作者头像 李华
网站建设 2026/10/23 2:53:14

1TOPS+WiFi6双频+千兆PHY,兼容树莓派CM4/CM5引脚|触觉智能SOM6208核心板

过去一年&#xff0c;树莓派 CM4/CM5 的交期与价格&#xff0c;逼着不少做工业设备的团队做了同一个动作&#xff1a;改板。然而随之而来的Layout、打样、EMC、老化、量产验证&#xff0c;一轮下来少则两三个月&#xff0c;多则半年——成本不止一颗芯片。触觉智能 RK3562核心板…

作者头像 李华
网站建设 2026/10/23 2:53:13

TLT153 工控机:Docker 环境部署与容器开发实践(下)

4 下载镜像并运行容器下载镜像前&#xff0c;需要先开启Docker相关服务&#xff0c;并确保存储驱动配置正确。&#xff08;1&#xff09;配置Docker存储驱动不同系统环境可能导致Docker默认存储驱动&#xff08;overlayfs/overlay2&#xff09;不一致&#xff0c;执行以下命令&…

作者头像 李华