【秋招突围】2024届秋招笔试-科大讯飞笔试题-03-三语言题解(Java/Cpp/Python)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员
✨ 本系计划跟新各公司春秋招的笔试题
💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导
👏 感谢大家的订阅➕ 和 喜欢💗
📧 清隆这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注CSDN同名公主号领取,会在飞书进行同步的跟新。
文章目录
- 📖 写在前面
- 夏天要来了 秋招还会远吗?
- 🍄 01.卢小姐的蛋糕分享
- 问题描述
- 输入格式
- 输出格式
- 样例输入
- 样例输出
- 数据范围
- 题解
- 参考代码
- 🎧 02.字符串的魔法变换
- 问题描述
- 输入格式
- 输出格式
- 样例输入
- 样例输出
- 数据范围
- 题解
- 参考代码
- 🍿 03.LYA 的魔法项链
- 问题描述
- 输入格式
- 输出格式
- 样例输入
- 样例输出
- 数据范围
- 题解
- 参考代码
- 🎀 写在最后
- 🛖 这里介绍一下咱们的笔试打卡小屋
- 🥰 打卡奖励
- 🕰 每日学习安排
- 📖 打卡小屋涉及题型
- 基础算法
- 基础数据结构
- 搜索
- 动态规划 & 贪心 & 数论
📖 写在前面
夏天要来了 秋招还会远吗?
前不久春招也算是圆满结束咯,大家有拿到心仪的 offer吗?
接下来互联网的秋招也快来啦,小伙伴们有开始准备了吗?
本次给大家带来24届秋招 阿里系 的笔试题目三语言解析(Java/Python/Cpp)
文末有清隆学长的笔试陪伴打卡小屋活动介绍:
✨丰富的打卡奖励等你来领哦,大厂笔试题汇总,笔试面试经验贴,算法笔试模版…
💽 有兴趣的小伙伴们也可以了解一下,不要错过啦~
🍄 01.卢小姐的蛋糕分享
问题描述
卢小姐今天烤了一个蛋糕,打算和朋友们一起分享。蛋糕被切成了 B B B 块,卢小姐自己先拿走了 A A A 块。现在,卢小姐想知道,剩下的蛋糕占整个蛋糕的比例是多少。
换句话说,给定两个正整数 A A A 和 B B B,请计算 1 − A B 1 - \frac{A}{B} 1−BA 的值,并以分数的形式输出,分子和分母之间用空格隔开。
输入格式
输入一行,包含两个正整数 A A A 和 B B B,表示卢小姐拿走的蛋糕块数和蛋糕总块数,数据之间用空格隔开。
输出格式
输出一行,包含两个整数,表示 1 − A B 1 - \frac{A}{B} 1−BA 的值,分子和分母之间用空格隔开。注意,输出的分母必须为 B B B。
样例输入
6 11
样例输出
5 11
数据范围
1 ≤ A < B ≤ 1 0 3 1 \le A < B \le 10^3 1≤A<B≤103
题解
根据题目要求,我们需要计算 1 − A B 1 - \frac{A}{B} 1−BA 的值,并以分数形式输出。我们可以通过以下步骤求解:
- 将 1 1 1 转化为 B B \frac{B}{B} BB 的形式。
- 计算 B B − A B \frac{B}{B} - \frac{A}{B} BB−BA,得到 B − A B \frac{B-A}{B} BB−A。
- 输出 B − A B-A B−A 和 B B B,即为所求分数的分子和分母。
时间复杂度: O ( 1 ) O(1) O(1)。
空间复杂度: O ( 1 ) O(1) O(1)。
参考代码
- Python
a, b = map(int, input().split())
print(b - a, b)
- Java
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int a = sc.nextInt();int b = sc.nextInt();System.out.println((b - a) + " " + b);}
}
- Cpp
#include <iostream>using namespace std;int main() {int a, b;cin >> a >> b;cout << b - a << " " << b << endl;return 0;
}
🎧 02.字符串的魔法变换
问题描述
LYA 是一个喜欢研究字符串的女孩。她发现,如果将一个字符串 S S S 中的某一段子串 S [ L , R ] S[L,R] S[L,R] 进行翻转,可以得到一个新的字符串。例如,将字符串 abcdefg
的子串 cdef
进行翻转,可以得到新字符串 abfedcg
。
现在,LYA 有两个长度均为 n n n 的字符串 A A A 和 B B B,她想知道是否可以通过对字符串 A A A 执行 恰好一次 上述的子串翻转操作,使其变成字符串 B B B。如果可以,请求出有多少种不同的翻转方案。
输入格式
第一行包含一个正整数 n n n,表示字符串的长度。
第二行包含一个长度为 n n n 的字符串 A A A。
第三行包含一个长度为 n n n 的字符串 B B B。
输出格式
输出一个整数,表示将字符串 A A A 变成字符串 B B B 的不同翻转方案数。如果无法通过一次翻转实现,则输出 0 0 0。
样例输入
6
abcdef
afedcb
样例输出
1
数据范围
- 1 ≤ n ≤ 1 0 4 1 \le n \le 10^4 1≤n≤104
- 字符串 A A A 和 B B B 仅包含小写字母
题解
本题可以通过双指针来解决。
首先,我们可以从字符串 A A A 和 B B B 的左右两端开始比较,找到第一个不同的字符位置 l l l 和最后一个不同的字符位置 r r r。如果 A [ l , r ] A[l,r] A[l,r] 翻转后与 B [ l , r ] B[l,r] B[l,r] 相同,那么就有可能通过一次翻转实现从 A A A 到 B B B 的转换。
接下来,我们验证 A [ l , r ] A[l,r] A[l,r] 翻转后是否与 B [ l , r ] B[l,r] B[l,r] 完全相同。如果不同,说明无法通过一次翻转实现转换,输出 0 0 0。
如果 A [ l , r ] A[l,r] A[l,r] 翻转后与 B [ l , r ] B[l,r] B[l,r] 相同,我们就找到了一种翻转方案。然后,我们可以尝试扩展这个翻转区间,将 l l l 向左移动, r r r 向右移动,并比较 A [ l ] A[l] A[l] 和 A [ r ] A[r] A[r] 是否相等。如果相等,那么这也是一种合法的翻转方案,翻转区间可以继续扩展。直到 l l l 和 r r r 到达字符串边界或者 A [ l ] ≠ A [ r ] A[l] \ne A[r] A[l]=A[r] 时,扩展停止。
最后,输出累计的翻转方案数即可。
时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( 1 ) O(1) O(1)。
参考代码
- Python
def solve(n, a, b):l = 0r = n - 1while l < n and a[l] == b[l]:l += 1while r >= 0 and a[r] == b[r]:r -= 1if l > r:return 1left, right = l, rwhile left <= r:if a[left] != b[right]:return 0left += 1right -= 1ans = 1l -= 1r += 1while l >= 0 and r < n:if a[l] == a[r]:ans += 1l -= 1r += 1else:breakreturn ansn = int(input())
a = input()
b = input()
print(solve(n, a, b))
- Java
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();String a = sc.next();String b = sc.next();System.out.println(solve(n, a, b));}private static int solve(int n, String a, String b) {int l = 0;int r = n - 1;while (l < n && a.charAt(l) == b.charAt(l)) {l++;}while (r >= 0 && a.charAt(r) == b.charAt(r)) {r--;}if (l > r) {return 1;}int left = l;int right = r;while (left <= r) {if (a.charAt(left) != b.charAt(right)) {return 0;}left++;right--;}int ans = 1;l--;r++;while (l >= 0 && r < n) {if (a.charAt(l) == a.charAt(r)) {ans++;l--;r++;} else {break;}}return ans;}
}
- Cpp
#include <iostream>
#include <string>using namespace std;int solve(int n, string a, string b) {int l = 0;int r = n - 1;while (l < n && a[l] == b[l]) {l++;}while (r >= 0 && a[r] == b[r]) {r--;}if (l > r) {return 1;}int left = l;int right = r;while (left <= r) {if (a[left] != b[right]) {return 0;}left++;right--;}int ans = 1;l--;r++;while (l >= 0 && r < n) {if (a[l] == a[r]) {ans++;l--;r++;} else {break;}}return ans;
}int main() {int n;string a, b;cin >> n >> a >> b;cout << solve(n, a, b) << endl;return 0;
}
🍿 03.LYA 的魔法项链
问题描述
LYA 是一位热爱魔法的少女。她拥有一条由 n n n 颗宝石组成的魔法项链,每颗宝石都有自己的颜色。然而,这条项链的魔力只有在所有宝石颜色相同时才能释放。
为了激活项链的魔力,LYA 可以使用魔法来移除项链上的一些宝石。每次移除操作需要选择项链上若干个位置不相邻的宝石进行移除。LYA 希望在项链变得只有一种颜色的宝石时,所需的移除操作次数最少。
现在,LYA 想知道,对于给定的项链长度 n n n 和移除操作次数 k k k,有多少种可能的初始项链状态。由于答案可能很大,请帮助 LYA 构造任意一种满足条件的初始项链状态。
输入格式
输入一行,包含两个以空格分隔的正整数 n n n 和 k k k,分别表示项链的长度和移除操作的次数。
输出格式
输出一个长度为 n n n 的字符串,仅由小写字母构成,表示一种满足条件的初始项链状态。如果不存在满足条件的项链状态,则输出 − 1 -1 −1。
样例输入
6 2
样例输出
abcabc
数据范围
- 1 ≤ k ≤ n ≤ 2 × 1 0 5 1 \leq k \leq n \leq 2 \times 10^5 1≤k≤n≤2×105
题解
这道题可以通过构造的方法来解决。我们可以先确定最终项链的颜色,然后在初始项链中添加一些其他颜色的宝石,使得移除操作的次数恰好等于 k k k。
具体步骤如下:
-
计算需要移除的宝石数量 d e l e t e C o u n t = 2 k − 1 deleteCount = 2^{k-1} deleteCount=2k−1。
-
计算最终剩余的宝石数量 s u r v i v o r C o u n t = n − d e l e t e C o u n t survivorCount = n - deleteCount survivorCount=n−deleteCount。如果 s u r v i v o r C o u n t < 1 survivorCount < 1 survivorCount<1,说明无解,输出 − 1 -1 −1。
-
将初始项链分成若干组,每组的大小为 d e l e t e C o u n t deleteCount deleteCount。如果 d e l e t e C o u n t > s u r v i v o r C o u n t deleteCount > survivorCount deleteCount>survivorCount,则将组数加倍,组的大小减半,直到组的大小不大于 s u r v i v o r C o u n t survivorCount survivorCount。
-
对于每一组,使用不同的字母填充,保证组内字母相同,组间字母不同。
-
在项链的末尾,再添加 s u r v i v o r C o u n t survivorCount survivorCount 个与最后一组不同的字母,作为最终剩余的宝石。
以上步骤可以构造出一种满足条件的初始项链状态。时间复杂度为 O ( n ) O(n) O(n),空间复杂度为 O ( n ) O(n) O(n)。
参考代码
- Python
n, k = map(int, input().split())delete_count = 1 << (k - 1)
survivor_count = n - delete_count
if survivor_count < 1:print(-1)
else:group_count = 1group_size = delete_countwhile group_size > survivor_count:group_count *= 2group_size = delete_count // group_countresult = []for i in range(group_count):for j in range(group_size):result.append(chr(ord('a') + i))survivor = chr(ord(result[-1]) + 1)result.extend([survivor] * survivor_count)print(''.join(result))
- Java
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int k = scanner.nextInt();int deleteCount = 1 << (k - 1);int survivorCount = n - deleteCount;if (survivorCount < 1) {System.out.println(-1);} else {int groupCount = 1;int groupSize = deleteCount;while (groupSize > survivorCount) {groupCount *= 2;groupSize = deleteCount / groupCount;}StringBuilder result = new StringBuilder();for (int i = 0; i < groupCount; i++) {for (int j = 0; j < groupSize; j++) {result.append((char) ('a' + i));}}char survivor = (char) (result.charAt(result.length() - 1) + 1);for (int i = 0; i < survivorCount; i++) {result.append(survivor);}System.out.println(result.toString());}}
}
- Cpp
#include <iostream>
#include <string>using namespace std;int main() {int n, k;cin >> n >> k;int deleteCount = 1 << (k - 1);int survivorCount = n - deleteCount;if (survivorCount < 1) {cout << -1 << endl;} else {int groupCount = 1;int groupSize = deleteCount;while (groupSize > survivorCount) {groupCount *= 2;groupSize = deleteCount / groupCount;}string result;for (int i = 0; i < groupCount; i++) {for (int j = 0; j < groupSize; j++) {result.push_back('a' + i);}}char survivor = result.back() + 1;for (int i = 0; i < survivorCount; i++) {result.push_back(survivor);}cout << result << endl;}return 0;
}
🎀 写在最后
🛖 这里介绍一下咱们的笔试打卡小屋
✨ 打卡小屋旨在陪伴大家,养成每日学习的好习惯。在这里,你可以:
- 🤝 与备战笔试的小伙伴相识,找到志同道合的学习小组
- 📝 通过写题解,巩固做题思路,养成良好的记录习惯
- 💡 系统掌握常考算法和数据结构,了解互联网笔试难度
- 🎁 坚持打卡,获得丰厚奖励,激励自己持之以恒
🥰 打卡奖励
打卡时长 | 奖励内容 |
---|---|
7天 | 任选一家最新互联网笔试真题 x 1 (价值29.9r) |
14天 | 任选一家最新互联网笔试真题 x 3 + 笔试面试经验贴 |
21天 | 任选一家最新互联网笔试真题 x 5 + 清隆三语言算法模版 |
28天 | 最新互联网大厂笔试真题汇总(价值199r) + 华为OD机试训练营 (价值89r) |
7天打卡即可值回票价,心动不如行动!=>笔试刷题陪伴小屋-打卡赢价值丰厚奖励 <=
🕰 每日学习安排
小屋将在每日上午发放打卡题目,包括:
- 一道算法模版题,帮助大家掌握常用算法套路
- 根据算法模版,精选一道对应的大厂笔试真题,巩固算法应用
让我们一起直击笔试重点,攻克常考题型!
📖 打卡小屋涉及题型
小屋从零基础出发,涵盖笔试常考知识点:
基础算法
- 自定义排序
- 二分
- 前缀和
- 差分
- 双指针
基础数据结构
- 栈 & 单调栈
- 队列 & 单调队列
- 并查集
- 优先队列(堆)
搜索
- DFS & BFS 基础应用
- 树的遍历
- 基础图论
动态规划 & 贪心 & 数论
- 快速幂
- 组合数
- 质数 & 因数
- 位运算
- 基础动态规划
- 常见贪心
相关文章:

【秋招突围】2024届秋招笔试-科大讯飞笔试题-03-三语言题解(Java/Cpp/Python)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系计划跟新各公司春秋招的笔试题 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📧 清隆这边…...

springboot是否可以代替spring
Spring Boot不能直接代替Spring,但它是Spring框架的一个扩展和增强,提供了更加便捷和高效的开发体验。以下是关于Spring Boot和Spring关系的详细解释: Spring框架: Spring是一个广泛应用的开源Java框架,提供了一系列模…...

基于SpringBoot的CSGO赛事管理系统
您好!我是专注于计算机技术研究的码农小野。如果您对CSGO赛事管理系统感兴趣或有相关开发需求,欢迎随时联系我。 开发语言:Java 数据库:MySQL 技术:SpringBoot框架,Java技术 工具:Eclipse&a…...
使用 Selenium 实现自动化分页处理与信息提取
目录 项目背景与目标Selenium 环境配置分页处理的基本思路简化后的代码示例总结 正文 1. 项目背景与目标 在进行 Web 自动化测试或数据抓取时,处理分页是一个常见的需求。通过 Selenium,我们可以自动化浏览多个分页并提取每页上的信息。本文将介绍如…...

现代信息检索笔记(二)——布尔检索
目录 信息检索概述 IR vs数据库: 结构化vs 非结构化数据 结构化数据 非结构化数据 半结构化数据 传统信息检索VS现代信息检索 布尔检索 倒排索引 一个例子 建立词项(可以是字、词、短语、一句话)-文档的关联矩阵。 关联向量 检索效果的评价 …...
使用Python实现学生管理系统
文章目录 1. 系统概述2. 系统功能3. 实现细节3.1 初始化学生列表3.2 添加学生3.3 显示所有学生3.4 查找学生3.5 删除学生3.6 主菜单 4. 运行系统 在本文中,我们将使用Python编程语言来开发一个简单的学生管理系统。该系统将允许用户执行基本的学生信息管理操作&…...

【嵌入式DIY实例】- LCD ST7735显示DHT11传感器数据
LCD ST7735显示DHT11传感器数据 文章目录 LCD ST7735显示DHT11传感器数据1、硬件准备与接线2、代码实现本文介绍如何将 ESP8266 NodeMCU 板 (ESP-12E) 与 DHT11 (RHT01) 数字湿度和温度传感器连接。 NodeMCU 从 DHT11 传感器读取温度(以 C 为单位)和湿度(以 rH% 为单位)值,…...

基于Tools体验NLP编程的魅力
大模型能理解自然语言,从而能解决问题,但是就像人类大脑一样,大脑只能发送指令,实际行动得靠四肢,所以LangChain4j提供的Tools机制就是大模型的四肢。 大模型的不足 大模型在解决问题时,是基于互联网上很…...
强化学习-3深度学习基础
文章目录 1 强化学习与深度学习的关系2 线性回归3 梯度下降4 逻辑回归5 全连接网络6 更高级的神经网络6.1 卷积神经网络6.2 循环神经网络6.3 transformer 将深度学习和强化学习结合起来,利用深度学习网络强大的拟合能力通过将状态、动作等作为输入,来估计…...

SOC模块LoRa-STM32WLE5有哪些值得关注
SoC 是片上系统的缩写,是一种集成芯片,集成了计算机或其他电子系统的所有或大部分组件。这些组件通常包括中央处理器 (CPU)、内存、输入/输出接口和辅助存储接口。包含数字、模拟、混合信号和通常的 RF 信号处理功能,具体取决于应用。片上系统…...
CSS中的display属性:布局控制的关键
CSS的display属性是控制元素在页面上如何显示的核心属性之一。它决定了元素的显示类型,以及它在页面布局中的行为。本文将详细介绍display属性的不同值及其使用场景,帮助你更好地掌握布局控制。 display属性的基本值 block 特点:块级元素&…...
【Spring Boot AOP通知顺序】
文章目录 一、Spring Boot AOP简介二、通知顺序1. 通知类型及其顺序示例代码 2. 控制通知顺序示例代码 一、Spring Boot AOP简介 AOP(Aspect-Oriented Programming,面向切面编程)是对OOP(Object-Oriented Programming,…...

k8s是什么
1、k8s出现的背景: 随着服务器上的应用增多,需求的千奇百怪,有的应用不希望被外网访问,有的部署的时候,要求内存要达到多少G,每次都需要登录各个服务器上执行操作更新,不仅容易出错,…...
使用雪花算法(Snowflake Algorithm)在Python中生成唯一ID
使用雪花算法Snowflake Algorithm在Python中生成唯一ID 使用雪花算法(Snowflake Algorithm)在Python中生成唯一ID雪花算法简介Python实现代码解析使用示例优势注意事项适用场景结论 使用雪花算法(Snowflake Algorithm)在Python中生…...

Docker期末复习
云计算服务类型有: IaaS 基础设施及服务 PaaS 平台及服务 SaaS 软件及服务 服务类型辨析示例: IaaS 服务提供的云服务器软件到操作系统,具体应用软件自己安装,如腾讯云上申请的云服务器等;SaaS提供的服务就是具体的软件,例如微软的Office套件等。 云计算部署模式有: 私有云…...

DP:子数组问题
文章目录 引言子数组问题介绍动态规划的基本概念具体问题的解决方法动态规划解法:关于子数组问题的几个题1.最大子数组和2.环形子数组的最大和3.乘积最大子数组4.乘积为正数的最长子数组长度5.等差数列划分 总结 引言 介绍动态规划(DP)在解决…...
[Day 20] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
AI在醫療領域的創新應用 隨著科技的快速發展,人工智能(AI)在各行各業的應用越來越廣泛,醫療領域也不例外。AI技術在醫療中的應用不僅提高了診斷的準確性,還改善了病患的治療效果,優化了醫療資源的配置。本…...

Handling `nil` Values in `NSDictionary` in Objective-C
Handling nil Values in NSDictionary in Objective-C When working with Objective-C, particularly when dealing with data returned from a server, it’s crucial (至关重要的) to handle nil values appropriately (适当地) to prevent unexpected crashes. Here, we ex…...

【深入浅出 】——【Python 字典】——【详解】
目录 1. 什么是 Python 字典? 1.1 字典的基本概念 1.2 字典的用途 1.3 字典的优势 2. 字典的基本特点 2.1 键的唯一性 2.2 可变性 2.3 无序性 3. 如何创建字典? 3.1 使用 {} 符号 3.2 使用 dict() 工厂方法 3.3 使用 fromkeys() 方法 4. 字…...

开发RpcProvider的发布服务(NotifyService)
1.发布服务过程 目前完成了mprpc框架项目中的以上的功能。 作为rpcprovider的使用者,也就是rpc方法的发布方 main函数如下: 首先我们init调用框架的init,然后启动一个provider,然后向provider上注册服务对象方法,即us…...

解析“道作为序位生成器”的核心原理
解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制,重点解析"道作为序位生成器"的核心原理与实现框架: 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...
webpack面试题
面试题:webpack介绍和简单使用 一、webpack(模块化打包工具)1. webpack是把项目当作一个整体,通过给定的一个主文件,webpack将从这个主文件开始找到你项目当中的所有依赖文件,使用loaders来处理它们&#x…...
js 设置3秒后执行
如何在JavaScript中延迟3秒执行操作 在JavaScript中,要设置一个操作在指定延迟后(例如3秒)执行,可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法,它接受两个参数: 要执行的函数&…...
接口 RESTful 中的超媒体:REST 架构的灵魂驱动
在 RESTful 架构中,** 超媒体(Hypermedia)** 是一个核心概念,它体现了 REST 的 “表述性状态转移(Representational State Transfer)” 的本质,也是区分 “真 RESTful API” 与 “伪 RESTful AP…...
Vue 实例的数据对象详解
Vue 实例的数据对象详解 在 Vue 中,数据对象是响应式系统的核心,也是组件状态的载体。理解数据对象的原理和使用方式是成为 Vue 专家的关键一步。我将从多个维度深入剖析 Vue 实例的数据对象。 一、数据对象的定义方式 1. Options API 中的定义 在 Options API 中,使用 …...

免费批量Markdown转Word工具
免费批量Markdown转Word工具 一款简单易用的批量Markdown文档转换工具,支持将多个Markdown文件一键转换为Word文档。完全免费,无需安装,解压即用! 官方网站 访问官方展示页面了解更多信息:http://mutou888.com/pro…...

联邦学习带宽资源分配
带宽资源分配是指在网络中如何合理分配有限的带宽资源,以满足各个通信任务和用户的需求,尤其是在多用户共享带宽的情况下,如何确保各个设备或用户的通信需求得到高效且公平的满足。带宽是网络中的一个重要资源,通常指的是单位时间…...

【Axure高保真原型】图片列表添加和删除图片
今天和大家分享图片列表添加和删除图片的原型模板,效果包括: 点击图片列表的加号可以显示图片选择器,选择里面的图片; 选择图片后点击添加按钮,可以将该图片添加到图片列表; 鼠标移入图片列表的图片&…...
Vuex:Vue.js 应用程序的状态管理模式
什么是Vuex? Vuex 是专门为 Vue.js 应用程序开发的状态管理模式 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 在大型单页应用中,当多个组件共享状态时,简单的单向数据流…...

Python[数据结构及算法 --- 栈]
一.栈的概念 在 Python 中,栈(Stack)是一种 “ 后进先出(LIFO)”的数据结构,仅允许在栈顶进行插入(push)和删除(pop)操作。 二.栈的抽象数据类型 1.抽象数…...