【优选算法】(第三十五篇)

devtools/2024/10/18 18:06:45/

目录

验证栈序列(medium)

题目解析

讲解算法原理

编写代码

N叉树的层序遍历(medium)

题目解析

讲解算法原理

编写代码


验证栈序列(medium)

题目解析

1.题目链接:. - 力扣(LeetCode)

2.题目描述

给定 pushed 和 popped 两个序列,每个序列中的值都不重复,只有当它们可能是在最初空栈上进⾏的推⼊push和弹出pop操作序列的结果时,返回 true ;否则,返回 false 。

⽰例1:
输⼊:pushed=[1,2,3,4,5],popped=[4,5,3,2,1]
输出:true
解释:我们可以按以下顺序执⾏:
push(1),push(2),push(3),push(4),pop()->4,
push(5),pop()->5,pop()->3,pop()->2,pop()->1
⽰例2:
输⼊:pushed=[1,2,3,4,5],popped=[4,3,5,1,2]
输出:false
解释:1不能在2之前弹出。

提⽰:
◦ 1 <= pushed.length <= 1000
◦ 0 <= pushed[i] <= 1000
◦ pushed 的所有元素互不相同
◦ popped.length == pushed.length
◦ popped 是 pushed 的⼀个排列

讲解算法原理

解法(栈):
算法思路:

⽤栈来模拟进出栈的流程。
⼀直让元素进栈,进栈的同时判断是否需要出栈。当所有元素模拟完毕之后,如果栈中还有元素,那么就是⼀个⾮法的序列。否则,就是⼀个合法的序列。

编写代码

c++算法代码:

class Solution
{
public:bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {stack<int> st;int i = 0, n = popped.size();for(auto x : pushed){st.push(x);while(st.size() && st.top() == popped[i]){st.pop();i++;}}return i == n;}
};

java算法代码:

class Solution
{public boolean validateStackSequences(int[] pushed, int[] popped) {Stack<Integer> st = new Stack<>();int i = 0, n = popped.length;for(int x : pushed){st.push(x);while(!st.isEmpty() && st.peek() == popped[i]){st.pop();i++;}}return i == n;}
}

N叉树的层序遍历(medium)

题目解析

1.题目链接:. - 力扣(LeetCode)

2.题目描述

给定⼀个N叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输⼊是⽤层序遍历,每组⼦节点都由null值分隔(参⻅⽰例)。
⽰例1:

输⼊:root=[1,null,3,2,4,null,5,6]输出:[[1],[3,2,4],[5,6]]
⽰例2:

输⼊:root=[1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]

提⽰:
◦ 树的⾼度不会超过 1000 ◦ 树的节点总数在 [0, 10^4] 之间

讲解算法原理

解法:
算法思路:

层序遍历即可~
仅需多加⼀个变量,⽤来记录每⼀层结点的个数就好了。

编写代码

c++算法代码:

/*
// Definition for a Node.
class Node {
public:int val;vector<Node*> children;Node() {}Node(int _val) {val = _val;}Node(int _val, vector<Node*> _children) {val = _val;children = _children;}
};
*/
class Solution
{
public:vector<vector<int>> levelOrder(Node* root) {vector<vector<int>> ret; // 记录最终结果 queue<Node*> q; // 层序遍历需要的队列if(root == nullptr) return ret;q.push(root);while(q.size()){int sz = q.size(); // 先求出本层元素的个数 vector<int> tmp; // 统计本层的节点for(int i = 0; i < sz; i++){Node* t = q.front();q.pop();tmp.push_back(t->val); for(Node* child : t->children) // 让下⼀层结点⼊队 {if(child != nullptr)q.push(child);}}ret.push_back(tmp);}return ret;}
};

java算法代码:

/*
// Definition for a Node.
class Node {public int val;public List<Node> children;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, List<Node> _children) {val = _val;children = _children;}
};
*/
class Solution
{public List<List<Integer>> levelOrder(Node root) {List<List<Integer>> ret = new ArrayList<>();if(root == null) return ret;Queue<Node> q = new LinkedList<>();q.add(root);while(!q.isEmpty()){int sz = q.size();List<Integer> tmp = new ArrayList<>(); // 统计本层的结点信息 for(int i = 0; i < sz; i++){Node t = q.poll();tmp.add(t.val);for(Node child : t.children) // 让孩⼦⼊队 {if(child != null)q.add(child);}}ret.add(tmp);}return ret;}
}


http://www.ppmy.cn/devtools/125097.html

相关文章

KDD 2024论文分享┆用于序列推荐的数据集再生

论文简介 本推文介绍了2024 KDD的最佳学生论文《Dataset Regeneration for Sequential Recommendation》。该论文提出了一种基于数据中心化范式的新框架&#xff0c;称为DR4SR&#xff0c;该框架通过模型无关的数据再生机制&#xff0c;能够生成具有出色跨架构泛化能力的理想训…

阿里云NAS之间迁移实践

本文将介绍如何通过LocalFs的最佳实践来进行阿里云NAS之间数据的迁移。 概述 阿里云提供的在线迁移服务是一种存储产品数据通道&#xff0c;客户有时需要在阿里云NAS之间进行数据迁移。本文档详细介绍了针对这一场景的相关内容。 警告 迁移过程数据不保证数据一致性&#x…

第十五届蓝桥杯C/C++学B组(解)

1.握手问题 解题思路一 数学方法 50个人互相握手 &#xff08;491&#xff09;*49/2 &#xff0c;减去7个人没有互相握手&#xff08;61&#xff09;*6/2 答案&#xff1a;1024 解题思路二 package 十五届;public class Min {public static void main(String[] args) {i…

基于Go语言的最长不含重复字符的子字符串的两种解法-JZ48

描述 请从字符串中找出一个最长的不包含重复字符的子字符串&#xff0c;计算该最长子字符串的长度。 数据范围: s.length≤40000 s.length≤40000 示例1 输入&#xff1a; "abcabcbb" 返回值&#xff1a; 3说明&#xff1a; 因为无重复字符的最长子串是"abc&quo…

手写mybatis之细化XML语句构建器,完善静态SQL解析

前言 1&#xff1a;在流程上&#xff0c;通过 DefaultSqlSession#selectOne 方法调用执行器&#xff0c;并通过预处理语句处理器 PreparedStatementHandler 执行参数设置和结果查询。 2&#xff1a;那么这个流程中我们所处理的参数信息&#xff0c;也就是每个 SQL 执行时&#…

2024系统架构师---试题四论网络安全体系架构设计及应用

试题四论网络安全体系架构设计及应用 建立信息系统安全体系的目的&#xff0c;就是将普遍性安全原理与信息系统的实际相结合&#xff0c;形成满足信息系统安全需求的安全体系结构&#xff0c;网络安全体系是信息系统体系的核心。OSI(Open System Interconnection)是由国际化标准…

Docker 环境下多节点服务器监控实战:从 Prometheus 到 Grafana 的完整部署指南

Docker 环境下多节点服务器监控实战&#xff1a;从 Prometheus 到 Grafana 的完整部署指南 文章目录 Docker 环境下多节点服务器监控实战&#xff1a;从 Prometheus 到 Grafana 的完整部署指南一 多节点部署1 节点一2 节点二3 节点三 二 监控节点部署三 配置 prometheus.yml四 …

大数据毕业设计选题推荐-招聘信息数据分析系统-Python数据可视化-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…