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

news2024/11/23 20:47:47

目录

验证栈序列(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.coloradmin.cn/o/2209365.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

校园网网页认证设备限制环境下基于OpenWRT的路由器选型与解决方案

校园网环境下基于OpenWRT的路由器选型与解决方案 网页认证(锐捷认证)解除校园网设备限制,路由器选型和解决方案 openwrt 我们学校校园网一个账号只能登录两台设备&#xff0c;多了直接就退出联网状态&#xff0c;然后校园网是基于锐捷认证进行认证的&#xff0c;然后通过ment…

【closerAI ComfyUI】爹妈都认不出的美女模糊照片,这个高清放大模型竟然能还原出来!这个AI模型我给满分

兄弟们&#xff0c;太离谱了&#xff0c;大家都知道FLUX模型的牛逼&#xff0c;现在基于FLUX的生态越发成熟&#xff0c;但一张模糊到五官都不能辨认的图片&#xff0c;通过AI模型的计算&#xff0c;竟然能还原出来。当然&#xff0c;这里我们的测试是过于极端。一般模糊一点的…

SpringCloud网关聚合knife4j方案

微服务开发中想将Spring-Cloud-Gateway网关聚合knife4j&#xff0c;形成一个统一入口方便查阅的开发辅助接口文档&#xff0c;并且将Swagger抽取成一个公共模块&#xff0c;那么我们可以参考以下的做法 约定&#xff1a; Java Version&#xff1a;11.0.24 Spring Boot&#xff…

一探究竟:全能型人体存在传感器如何革新全屋智能生活

如今&#xff0c;全屋智能家居已蔚然成风&#xff0c;亲历过个性化智能家居配置的用户无不深知传感器在其联动逻辑中扮演的关键角色。市场上主流的传感器类型多为移动监测型&#xff0c;此类设备通过探测区域内是否存在人员活动来触发相应的自动化操作。尽管它们在众多应用场景…

实用软件分享

文章路径 Pfolg_Source/实用软件记录.md at main Pfolg/Pfolg_Source (github.com)https://github.com/Pfolg/Pfolg_Source/blob/main/%E5%AE%9E%E7%94%A8%E8%BD%AF%E4%BB%B6%E8%AE%B0%E5%BD%95.md 注 这篇文章水的不得了&#xff0c;但我花了半小时来水……

谷歌-BERT-第四步:模型部署

1 需求 需求1&#xff1a;基于gradio实现大模型的WEB UI交互界面 2 接口 3 示例 import gradio as gr from transformers import *classifier pipeline("text-classification", model"./model", tokenizer"./model")gr.Interface.from_pipel…

c++(多态)

多态的定义 多态是⼀个继承关系的下的类对象&#xff0c;去调⽤同⼀函数&#xff0c;产⽣了不同的⾏为 ⽐如Student继承了Person。Person对象买票全价&#xff0c;Student对象优惠买票。 多态实现的条件 • 必须指针或者引⽤调⽤虚函数 第⼀必须是基类的指针或引⽤&#xff0c;…

【HarmonyOS NEXT】实现二个直角梯形按钮,拼接为矩形,斜边可以点击

【问题描述】 实现二个直角梯形按钮两梯形的斜边&#xff0c;对接再一起&#xff0c;组成一个矩形斜边附近的区域能点击 【原型图】 【方案】 canvas——斜边附近的区域无法点击Shape——斜边附近的区域无法点击clipShape——完美解决 【代码】 Entry Component struct …

Spring Task 使用详解

在应用开发中&#xff0c;定时任务扮演着至关重要的角色&#xff0c;例如定时数据同步、定时邮件发送、定时清理缓存等。Spring Framework 提供了一个强大而灵活的定时任务框架——Spring Task&#xff0c;它可以帮助我们轻松地实现各种定时任务&#xff0c;而无需依赖复杂的第…

光影魔术手 0.1.5 | 免费的修图神器,支持AI智能美颜、证件照制作等功能

光影魔术手是一款完全免费的修图软件、AI智能调色软件、证件照制作软件。支持的功能包括&#xff1a;AI智能美颜、AI人脸变清晰、AI智能调色、AI滤镜、拼图、证件照制作、图片裁剪。证件照制作功能提供了丰富的证件照尺寸&#xff0c;支持7种背景颜色切换。拼图功能支持横向长图…

XXl-JOB 安装使用,服务注册

一、下载源码 xxl-job源码地址&#xff1a; GitHub - xuxueli/xxl-job: A distributed task scheduling framework.&#xff08;分布式任务调度平台XXL-JOB&#xff09; 2.4.2版本为例&#xff1a;https://github.com/xuxueli/xxl-job/archive/refs/tags/2.4.1.tar.gz xx…

2013年国赛高教杯数学建模C题古塔的变形解题全过程文档及程序

2013年国赛高教杯数学建模 C题 古塔的变形 由于长时间承受自重、气温、风力等各种作用&#xff0c;偶然还要受地震、飓风的影响&#xff0c;古塔会产生各种变形&#xff0c;诸如倾斜、弯曲、扭曲等。为保护古塔&#xff0c;文物部门需适时对古塔进行观测&#xff0c;了解各种变…

【交通标志识别系统】Python+卷积神经网络算法+人工智能+深度学习+机器学习+算法模型

一、介绍 交通标志识别系统。本系统使用Python作为主要编程语言&#xff0c;在交通标志图像识别功能实现中&#xff0c;基于TensorFlow搭建卷积神经网络算法模型&#xff0c;通过对收集到的58种常见的交通标志图像作为数据集&#xff0c;进行迭代训练最后得到一个识别精度较高…

C语言中的文件操作(一)

目录 一、为什么要使用文件 二、什么是文件 1、程序文件 2、数据文件 文件名 三、文件打开和关闭 1、文件指针 2、文件打开关闭 &#xff08;1&#xff09;fopen 打开 &#xff08;2&#xff09;fclose 关闭文件 &#xff08;3&#xff09;路径 1.绝对路径 2.相对路…

子网掩码、网络地址、广播地址、子网划分及计算

1. IPV4地址分类及组成 IP地址网络地址主机地址&#xff0c;&#xff08;又称&#xff1a;主机号和网络号&#xff09; 由上图可见网络号和主机号之和是32&#xff0c;而且此多彼少。 例&#xff1a;IP地址为192.168.2.131&#xff0c;转换成二进制1111 1111.1010 1000.0000 00…

编译原理——扫描器设计与实现

非常详细&#xff08;包括跳过注释部分&#xff09;&#xff0c;不多说直接上代码&#xff08;结合代码讲解&#xff09; #include<bits/stdc.h>using namespace std;#define ARRAY_LENGTH(arr) (sizeof(arr) / sizeof(arr[0]))//关键词集合 string KEY_WORD[] {"…

vue+ant解决弹窗可以拖动的问题

通过自定义指令实现拖拽功能 在main.js里加入drag自定义指令 Vue.directive(drag, {bind(el) {// 获取弹窗头部const header el.querySelector(.ant-modal-header)const modal el.querySelector(.ant-modal)// 弹窗头部鼠标变为移动header.style.cursor move// 头部鼠标按…

心觉:别再让你的精力流浪,精准掌控每一刻

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作197/1000天 昨天写了一篇文章心觉&#xff1a;生理欲望转化的奥秘&#xff1a;提升创造力的法则 核心观点是来自于拿破仑希尔的《…

ICML 2024 | 牛津提出合作图神经网络Co-GNNs,更灵活的消息传递新范式

引用次数:9 引用格式:Finkelshtein B, Huang X, Bronstein M, et al. Cooperative graph neural networks[J]. arXiv preprint arXiv:2310.01267, 2023. 一、摘要 本文提出了一种训练图神经网络的新框架“合作图神经网络”(Co-GNNs),其中每一个节点可以被看作一个独立的玩…

【数据结构】邻接表

一、概念 邻接表是一个顺序存储与链式存储相结合的数据结构&#xff0c;用于描述一个图中所有节点之间的关系。 若是一个稠密图&#xff0c;我们可以选择使用邻接矩阵&#xff1b;但当图较稀疏时&#xff0c;邻接矩阵就显得比较浪费空间了&#xff0c;此时我们就可以换成邻接…