Python ACM 模式下的输入输出

password
icon
AI summary
type
status
date
slug
summary
tags
category
Property
Nov 22, 2024 02:43 AM
与leetcode的核心代码模式不同,acm模式下需要自己编写输入与输出函数。
推荐以下几个网站练习acm模式:

1. 输入函数模板

1.1 获取输入数据

Python输入数据主要通过input()函数实现,input()会读取控制台一行的输入,如果输入有多行的话,需要多次使用input()
与Python2中不同,Python3中的input()会将接受的数据返回为一个string类型,如果一行中有多个数据的话,则需要使用split()进行切割。split()切割后返回一个列表。
因为input()返回的是string,分割后也是一个字符列表,如果输入数据是数字则需要进行类型转换。可以单个转换或是用列表批量转换,或者是使用map()并行转换。map()函数返回的是一个迭代器,不能改变值,如果需要改变值的话还需要转换成列表

1.2 三种情况的输入数据

情况1: 多行输入,同时未指定用例的个数,例子1
情况2: 多行输入, 指定用例个数, 例子2
情况3: 多行输入,指定某个条件退出,例子3

2. 输出函数模板

Python3的输出主要靠print()函数,就是把结果打印至终端。需要对print()函数的sepend两个参数有一定的了解,可以查看菜鸟教程
情况1: 输出单个数字
情况2: 输出多个数字,同时要求以分隔符隔开
情况3:最终结果是一个列表
情况4: 将字符列表合成一个字符串,需要用到join()函数

3. 链表的输入输出

acm模式中的链表也是通过输入一个数组来模拟的,所以获取输入数据和前面没有什么不同。
主要在于定义链表结构、将输入数据转化为链表以及输出链表。

4. 二叉树的输入输出

4.1 完全二叉树格式输入

acm模式中一般用输入一行数字代表一个二叉树,一般会以完全二叉树格式输入。这行数字的按照层序遍历的顺序排列,且其中空节点一般会用特定的符号表示,如0或是null
可以直接用数组表示二叉树,例如列表Tree, 将Tree[i]的左子树和右子树分别为Tree[2*i+1]Tree[2*i+2],不过会比较占用空间。
也可以用链表实现,更省空间,但操作更复杂一些。

4.2 其他格式输入

有部分题目的输入格式不是完全二叉树,例如leetcode的二叉树格式,输入的数组虽然也是按照层序遍历的顺序,但并不是每一层的空节点都会表示出来,而是仅表示与非空节点连接的空节点。

参考博客

 
 
上一篇
算法学习记录(to 飞书)
下一篇
HJ机试题目整理
Loading...