跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++算法

LeetCode Hot 100:ACM 模式输入输出处理指南

LeetCode 等 OJ 平台的 ACM 模式输入输出处理。内容包括固定式与不定式输入解析方法(如 cin、getline、stringstream),输出格式规范(末尾无空格),以及常见错误排查。提供了数组求和、链表构建遍历、二叉树节点定义的 C++ 代码模板,并强调了面试中核心逻辑与 IO 分离的原则。同时介绍了万能头文件的使用场景。

DevOpsTeam发布于 2026/3/30更新于 2026/9/984 浏览

ACM 模式

ACM 模式是一种需要自行处理输入输出的做题模式。

1. 输入输出处理

1.1 固定式输入分析

1)第一行输入三个数 x, y, z

long long x, y, z; cin >> x >> y >> z;

2)前两行分别是整数 x, y

long long x, y; cin >> x >> y;

3)第一行一个整数 n,第二行输入 n 个整数

int n; cin >> n; vector<int> arr(n); for (int i = 0; i < n; i++) cin >> arr[i];
1.2 不定式输入分析
string line;
while (getline(cin, line)) {
    stringstream ss(line);
    int num;
    while (ss >> num) {
        // 处理数字
    }
}

getline 会从输入里读一整行(直到换行符)。读到文件结束 EOF 返回 false,循环结束。 stringstream 把字符串变成可像 cin 一样读的流,之后可以用 ss >> num 解析行内的数字。

2. 输出分析

注意末尾,保证末尾没有空格或其他字符,否则可能出错。

3. OJ 常见错误

需仔细检查边界条件和格式要求。

4. 面试中的 ACM 模式考察

记得把样例写出来,面试官就看你样例的输出。核心代码与输入输出分离,结构要清晰。

5. 万能头文件

#include <bits/stdc++.h> 是 GCC 编译器套件中一个非标准的头文件,包含了 C++ 标准库中几乎所有的头文件。只要包含了这一个文件,就可以使用大部分 C++ 标准库的功能。

6. 常用数据结构模板

6.1 数组的读入

题目内容:给定一个整数数组 nums,求解数组的和。 输入共两行。第一行为一个整数 n,代表数组 nums 的长度。第二行为 n 个整数,即数组的元素。输出数组的和。

#include 
  std;

{
     sum = ;
     ( i = ; i < nums.(); i++) {
        sum += nums[i];
    }
     sum;
}

{
     n; cin >> n;
    ;
     ( i = ; i < n; i++) cin >> nums[i];
    cout << (nums) << endl;
     ;
}
<bits/stdc++.h>
using
namespace
int summary(const vector<int>& nums)
int
0
for
int
0
size
return
int main()
int
vector<int> nums(n)
for
int
0
summary
return
0
6.2 链表的读入

给定一个整数数组 nums,要求先构建一个链表,然后遍历链表并输出所有元素。

#include <bits/stdc++.h>
using namespace std;

struct ListNode {
    int val;
    ListNode* next;
    ListNode(int x) : val(x), next(nullptr) {}
};

ListNode* createLinkedList(const vector<int>& nums) {
    if (nums.empty()) return nullptr;
    ListNode* head = new ListNode(nums[0]);
    ListNode* cur = head;
    for (size_t i = 1; i < nums.size(); i++) {
        cur->next = new ListNode(nums[i]);
        cur = cur->next;
    }
    return head;
}

void printLinkedList(ListNode* head) {
    ListNode* cur = head;
    while (cur) {
        cout << cur->val << endl;
        cur = cur->next;
    }
}

int main() {
    int n; cin >> n;
    vector<int> nums(n);
    for (int i = 0; i < n; i++) cin >> nums[i];
    ListNode* head = createLinkedList(nums);
    printLinkedList(head);
    return 0;
}
6.3 二叉树的读入与构建
struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};

目录

  1. ACM 模式
  2. 1. 输入输出处理
  3. 1.1 固定式输入分析
  4. 1.2 不定式输入分析
  5. 2. 输出分析
  6. 3. OJ 常见错误
  7. 4. 面试中的 ACM 模式考察
  8. 5. 万能头文件
  9. 6. 常用数据结构模板
  10. 6.1 数组的读入
  11. 6.2 链表的读入
  12. 6.3 二叉树的读入与构建

更多推荐文章

查看全部
  • 基于 Scrapling 为 AI Agent 配置网页爬虫技能指南
  • PostgreSQL 常用操作指南
  • llama.cpp 本地大模型部署与 API 服务搭建教程
  • AI 时代产品经理成长路径:核心能力与实战指南
  • 钉钉 Webhook 完全指南
  • VR + 具身智能 + 人形机器人:通往现实世界的智能接口
  • Python SQLAlchemy ORM 数据库操作指南
  • OpenRouter 入门:统一接口调用 500+AI 模型实战
  • 大模型领域 10 篇前沿论文精选
  • Linux 进程信号深度解析:从内核机制到实操应用
  • set 与 map 底层实现及高频算法实战
  • 2025 年大模型学习路线与核心知识体系解析
  • Python 基础语法入门:常量、变量与运算符
  • C++ multiset 核心原理与实战指南
  • Python 开源 AI 模型引入与测试实战
  • 无人机 AI 算法全景图:7 大场景 50+ 算法详解
  • DeepSeek 与 Cursor 协同构建智能代码审查工具实战
  • 本地部署 Z-Image-Turbo:16GB 显存实现高效 AI 绘画
  • 10 个 GitHub 热门开源项目:AI Agent、Rust 架构与开发者工具
  • AI 绘画:DALL·E 3 绘图功能与 API 使用指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online