31. 下一个排列  145. 二叉树的后序遍历  1171. 从链表中删去总和值为零的连续节点
31. 下一个排列实现获取下一个排列的函数算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列则将数字重新排列成最小的排列即升序排列。必须原地修改只允许使用额外常数空间。以下是一些例子输入位于左侧列其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1来源力扣LeetCode链接https://leetcode-cn.com/problems/next-permutation本质上这种题有两种情况:(1):如果是降序数组,则下一个排列数字为最小数字,即将数组全部反转即可;(2):一般情况,首先定义两个index1和index2指针用于保存左右要交换的数字,首先从后往前遍历,得到第一次的nums[i - 1] nums[i],将下标保存分别赋值index1i-1,index2i,(如果遍历完后index还是等于-1,即数组为降序数组,直接反转数组即可),而index2不一定是当前下标,需要从iindex2到数组末尾继续遍历,如果nums[i] nums[index1]就继续遍历赋值,最后反转index1 1到数组末尾的数字即可得到下一个排列;class Solution { public void nextPermutation(int[] nums) { int index1 -1, index2 -1; for (int i nums.length - 1; i 0; i--) { if (nums[i] nums[i - 1]) { index1 i - 1; index2 i; break; } } if (index1 -1) { int start 0, end nums.length - 1; while (start end) { int temp nums[start]; nums[start] nums[end]; nums[end--] temp; } return; } for (int i index2; i nums.length; i) { if (nums[i] nums[index1]) index2 i; } int temp nums[index1]; nums[index1] nums[index2]; nums[index2] temp; int start index1 1, end nums.length - 1; while (start end) { int tem nums[start]; nums[start] nums[end]; nums[end--] tem; } } }145. 二叉树的后序遍历给定一个二叉树返回它的 后序 遍历。示例:输入: [1,null,2,3]1\2/3输出: [3,2,1]来源力扣LeetCode链接https://leetcode-cn.com/problems/binary-tree-postorder-traversal递归方式/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val x; } * } */ class Solution { ListInteger list new ArrayList(); public ListInteger postorderTraversal(TreeNode root) { post(root); return list; } public void post(TreeNode root){ if(root null){ return ; } postorderTraversal(root.left); postorderTraversal(root.right); list.add(root.val); } }迭代方式求二叉树后序遍历可以如下操作用stack存储当前节点的左右子树output保存输出当前节点 结束后对output在进行翻转/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val x; } * } */ class Solution { public ListInteger postorderTraversal(TreeNode root) { LinkedListTreeNode stack new LinkedList(); LinkedListInteger output new LinkedList(); if (root null) { return output; } stack.add(root); while (!stack.isEmpty()) { TreeNode node stack.pollLast(); output.addFirst(node.val); if (node.left ! null) { stack.add(node.left); } if (node.right ! null) { stack.add(node.right); } } return output; } }412. Fizz Buzz写一个程序输出从 1 到 n 数字的字符串表示。1. 如果 n 是3的倍数输出“Fizz”2. 如果 n 是5的倍数输出“Buzz”3.如果 n 同时是3和5的倍数输出 “FizzBuzz”。示例n 15,返回:[1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz,11,Fizz,13,14,FizzBuzz]来源力扣LeetCode链接https://leetcode-cn.com/problems/fizz-buzzclass Solution { public ListString fizzBuzz(int n) { ListString list new ArrayList(); for (int i 1; i n; i) { StringBuilder sb new StringBuilder(); if(i % 3 0 ){ sb.append(Fizz); } if(i %5 0){ sb.append(Buzz); } if(sb.toString().equals()){ sb.append(i); } list.add(sb.toString()); } return list; } }1171. 从链表中删去总和值为零的连续节点给你一个链表的头节点 head请你编写代码反复删去链表中由 总和 值为 0 的连续节点组成的序列直到不存在这样的序列为止。删除完毕后请你返回最终结果链表的头节点。你可以返回任何满足题目要求的答案。注意下面示例中的所有序列都是对 ListNode 对象序列化的表示。示例 1输入head [1,2,-3,3,1]输出[3,1]提示答案 [1,2,1] 也是正确的。示例 2输入head [1,2,3,-3,4]输出[1,2,4]示例 3输入head [1,2,3,-3,-2]输出[1]提示给你的链表中可能有 1 到 1000 个节点。对于链表中的每个节点节点的值-1000 node.val 1000.来源力扣LeetCode链接https://leetcode-cn.com/problems/remove-zero-sum-consecutive-nodes-from-linked-list/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val x; } * } */ class Solution { /* 我们可以考虑如果给的入参不是链表是数组的话只需要求出前缀和对于前缀和相同的项 那他们中间的部分即是可以消除掉的比如以 [1, 2, 3, -3, 4] 为例 其前缀和数组为 [1, 3, 6, 3, 7] 我们发现有两项均为 3则 6 和 第二个 3 所对应的原数组中的数字是可以消掉的。换成链表其实 也是一 样的思路把第一个 3 的 next 指向第二个 3 的 next 即可 */ public ListNode removeZeroSumSublists(ListNode head) { ListNode dummy new ListNode(0); dummy.next head; MapInteger, ListNode prefixSumMap new HashMap(); ListNode p dummy; int prefixSum 0; while (p ! null) { prefixSum p.val; if (prefixSumMap.containsKey(prefixSum)) { p prefixSumMap.get(prefixSum).next; int val prefixSum p.val; while (val ! prefixSum) { //以下代码是删去 两个前缀和相同的结点之间的结点 //不然会导致之后可能某些结点的前缀和错误匹配了本应该被删去的节点 prefixSumMap.remove(val); p p.next; val p.val; } prefixSumMap.get(prefixSum).next p.next; } else { prefixSumMap.put(prefixSum, p); } p p.next; } return dummy.next; } }344. 反转字符串编写一个函数其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1输入[h,e,l,l,o]输出[o,l,l,e,h]示例 2输入[H,a,n,n,a,h]输出[h,a,n,n,a,H]来源力扣LeetCode链接https://leetcode-cn.com/problems/reverse-stringclass Solution { public void reverseString(char[] s) { for (int i 0,j s.length-1; i j; i,j--) { char temp s[i]; s[i] s[j]; s[j] temp; } } }19. 删除链表的倒数第N个节点给定一个链表删除链表的倒数第 n 个节点并且返回链表的头结点。示例给定一个链表: 1-2-3-4-5, 和 n 2.当删除了倒数第二个节点后链表变为 1-2-3-5.说明给定的 n 保证是有效的。来源力扣LeetCode链接https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list一次遍历算法首先我们将添加一个哑结点作为辅助该结点位于列表头部。哑结点用来简化某些极端情况例如列表中只含有一个结点或需要删除列表的头部。上述算法可以优化为只使用一次遍历。我们可以使用两个指针而不是一个指针。第一个指针从列表的开头向前移动 n1 步而第二个指针将从列表的开头出发。现在这两个指针被 n 个结点分开。我们通过同时移动两个指针向前来保持这个恒定的间隔直到第一个指针到达最后一个结点。此时第二个指针将指向从最后一个结点数起的第 n个结点。我们重新链接第二个指针所引用的结点的 next 指针指向该结点的下下个结点。删除链表的倒数第 N 个元素/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val x; } * } */ class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy new ListNode(0); dummy.next head; ListNode first dummy; ListNode second dummy; for (int i 1; i n 1; i) { first first.next; } while (first ! null) { first first.next; second second.next; } second.next second.next.next; return dummy.next; } }

相关新闻

普通人AI实战白皮书:基于217份真实案例提炼的8类高频场景解决方案

普通人AI实战白皮书:基于217份真实案例提炼的8类高频场景解决方案

更多请点击: https://kaifayun.com 第一章:普通人如何拥抱AI AI不再是科技从业者的专属工具,它正以极低的门槛融入日常学习、工作与生活。普通人无需掌握算法原理或编写复杂模型,只需理解其能力边界,并善用成熟、安全…

2026/7/28 19:50:44 阅读更多 →
46天上线千问办公,陈宇森如何带领阿里在办公Agent市场追赶腾讯?

46天上线千问办公,陈宇森如何带领阿里在办公Agent市场追赶腾讯?

46天火速上线,千问办公整合阿里办公Agent资源7月27日,千问办公官网上线,Windows、macOS Beta版和鸿蒙电脑尝鲜版同步开放下载。这是陈宇森6月11日接任钉钉CEO后,46天内公开交付的第一款产品。此前,阿里内部有QoderWork…

2026/7/28 19:49:43 阅读更多 →
Linux下彻底删除安装的rpm包

Linux下彻底删除安装的rpm包

如何彻底Linux系统下安装的rpm包?现以mySQL为例进行介绍:一、使用以下命令查看mysql安装情况rpm -qa | grep -i mysql可以看到以下结果:根据结果可以看出以前安装了:MySQL-server-5.6.25-1.e16.x86_64mySQL-client-5.6.25-1.e16.x86_64二、停…

2026/7/28 19:49:43 阅读更多 →

最新新闻

物联网设备安全方案:SE050与STM32F410RB硬件集成

物联网设备安全方案:SE050与STM32F410RB硬件集成

1. 为什么物联网设备需要专用安全芯片?在开始讨论SE050与STM32F410RB的组合方案前,我们需要先理解物联网设备面临的安全挑战。传统MCU(如STM32系列)虽然性能强大,但在安全防护方面存在天然短板:密钥存储风险…

2026/7/28 19:57:50 阅读更多 →
电磁炮原理与DIY指南:从洛伦兹力到自制线圈炮

电磁炮原理与DIY指南:从洛伦兹力到自制线圈炮

1. 项目概述:从科幻到现实的能量投射艺术“电磁炮”这个词,听起来就像是直接从科幻电影里蹦出来的终极武器。想象一下,一道蓝光闪过,一枚弹丸以数倍音速撕裂空气,精准命中远在数百公里外的目标,没有火光&am…

2026/7/28 19:57:50 阅读更多 →
Codex:AI 编程助手的核心引擎

Codex:AI 编程助手的核心引擎

1. 引言 在人工智能与编程结合的前沿领域,OpenAI Codex 是一个里程碑式的模型。它基于强大的 GPT-3 架构,专门针对代码生成和理解进行了训练。简单来说,Codex 能够将自然语言描述转化为可执行的代码,或将代码片段转化为清晰的解释…

2026/7/28 19:57:50 阅读更多 →
Spring 框架入门:从零开始构建你的第一个应用

Spring 框架入门:从零开始构建你的第一个应用

1. 引言 Spring 是 Java 领域最受欢迎的企业级应用开发框架之一。它通过提供全面的编程和配置模型,简化了企业级 Java 应用的开发,使其更加模块化、可测试和可维护。无论是构建微服务、Web 应用还是数据访问层,Spring 都提供了强大的支持。 …

2026/7/28 19:57:50 阅读更多 →
AI测试智能体来了:APP自动化测试中的弹窗难题终于有解了——爱测智能测试平台 AI 自动化测试智能体 POC 实践案例

AI测试智能体来了:APP自动化测试中的弹窗难题终于有解了——爱测智能测试平台 AI 自动化测试智能体 POC 实践案例

关注 霍格沃兹软件测试开发 公众号,回复「资料」, 领取人工智能测试开发技术合集在移动端自动化测试过程中,有一个长期困扰测试团队的问题:自动化脚本能够执行,但遇到弹窗后,经常失败。例如:首次启动 App 的…

2026/7/28 19:57:50 阅读更多 →
物联网硬件安全防护:SE050与STM32F765ZI实战指南

物联网硬件安全防护:SE050与STM32F765ZI实战指南

1. 为什么物联网设备需要硬件级安全防护在智慧城市、工业4.0等场景中,我们经常看到这样的案例:某智能路灯控制系统被入侵导致城市照明瘫痪,或者工厂传感器数据被篡改引发生产事故。传统基于软件加密的方案存在致命缺陷——密钥存储在Flash中容…

2026/7/28 19:56:50 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻