AI Coding 实战:让我更自信胜任工作的完整指南
2026/8/3 5:11:03 网站建设 项目流程

1. 引言:AI Coding 如何重塑我的工作自信

在接触 AI Coding 之前,我常常因为不熟悉某个框架、记不住 API 细节、或者面对陌生技术栈而焦虑。AI 编程助手改变了这一切——它让我从「害怕写错」变成「敢于尝试」,从「反复查文档」变成「快速验证想法」。这篇文章将用大量可运行的代码实战,展示 AI Coding 如何让我更自信地胜任工作。

本文的核心观点是:AI Coding 不是替代你思考,而是放大你的能力。它帮你扫清重复劳动和知识盲区,让你把精力集中在真正重要的架构设计和业务逻辑上。

2. 实战准备:搭建 AI Coding 工作环境

在开始之前,我们需要准备一套完整的 AI Coding 工具链。这里以目前主流的组合为例:

  • 代码编辑器:VS Code 或 JetBrains 系列,安装 AI 插件。
  • AI 助手:Claude Code、GitHub Copilot、Cursor 等,选择适合你团队的一款。
  • 终端工具:支持 AI 命令行的终端,方便在终端中直接与 AI 交互。

下面是一个简单的环境验证脚本,确保你的 AI 助手能正常工作:

# 检查 Node.js 环境 node --version 检查 Python 环境 python --version 检查 Git 版本 git --version 验证 AI 助手是否可用(以 Claude Code 为例) claude --version

当所有命令都能正常输出版本号时,你的 AI Coding 环境就准备好了。

3. 实战一:用 AI 快速生成项目脚手架

以前搭建一个新项目,我需要手动创建目录、配置文件、初始化依赖,耗时又容易出错。现在,我只需要用自然语言描述需求,AI 就能帮我生成完整的项目结构。

下面是一个典型的 AI 对话示例,以及它生成的代码:

# 向 AI 助手发出指令 claude "创建一个 Node.js + Express 的 REST API 项目,包含用户注册和登录功能,使用 JWT 认证"

AI 会生成类似下面的项目结构和核心代码:

// server.js - Express 服务器入口 const express = require('express'); const mongoose = require('mongoose'); const authRoutes = require('./routes/auth'); const app = express(); app.use(express.json()); // 连接数据库 mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true }); // 注册路由 app.use('/api/auth', authRoutes); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(Server running on port ${PORT}); });
// routes/auth.js - 认证路由 const router = require('express').Router(); const bcrypt = require('bcrypt'); const jwt = require('jsonwebtoken'); const User = require('../models/User'); // 用户注册 router.post('/register', async (req, res) => { try { const { username, password } = req.body; const hashedPassword = await bcrypt.hash(password, 10); const user = new User({ username, password: hashedPassword }); await user.save(); res.status(201).json({ message: 'User created' }); } catch (error) { res.status(500).json({ error: error.message }); } }); // 用户登录 router.post('/login', async (req, res) => { try { const { username, password } = req.body; const user = await User.findOne({ username }); if (!user) return res.status(401).json({ error: 'Invalid credentials' }); const valid = await bcrypt.compare(password, user.password); if (!valid) return res.status(401).json({ error: 'Invalid credentials' }); const token = jwt.sign({ id: user._id }, process.env.JWT_SECRET); res.json({ token }); } catch (error) { res.status(500).json({ error: error.message }); } }); module.exports = router;

这段代码可以直接运行,并且包含了完整的注册、登录和 JWT 认证逻辑。以前我需要花一两个小时完成的工作,现在几分钟就能搞定。

4. 实战二:用 AI 调试疑难 Bug

调试是工作中最让人头疼的环节之一。AI Coding 让我从「盲猜」变成「精准定位」。下面是一个真实的调试案例:

假设我们有一段 Python 代码,处理 CSV 文件时总是报错:

import csv def process_csv(file_path): with open(file_path, 'r') as f: reader = csv.reader(f) for row in reader: # 处理每一行数据 process_row(row) def process_row(row): # 假设第一列是数字 value = int(row[0]) print(f"Processing: {value}") 调用函数 process_csv('data.csv')

运行时报错:ValueError: invalid literal for int() with base 10: 'Name'。以前我会手动检查 CSV 文件,现在直接把错误信息丢给 AI:

claude "我的 Python 代码报错 ValueError: invalid literal for int() with base 10: 'Name',帮我修复"

AI 会立刻指出问题:CSV 文件包含表头行,需要跳过。修复后的代码:

import csv def process_csv(file_path): with open(file_path, 'r') as f: reader = csv.reader(f) next(reader) # 跳过表头行 for row in reader: if not row: # 跳过空行 continue process_row(row) def process_row(row): try: value = int(row[0]) print(f"Processing: {value}") except ValueError: print(f"Skipping invalid row: {row}") process_csv('data.csv')

这个案例展示了 AI Coding 的核心价值:它不仅能告诉你哪里错了,还能给出健壮的修复方案,包括跳过空行、异常处理等边界情况。

5. 实战三:用 AI 重构遗留代码

面对老项目中的遗留代码,我常常不敢轻易改动,怕破坏现有功能。AI Coding 给了我重构的勇气。下面是一个典型的重构场景:

原始代码(一个 Java 类,职责混乱):

public class OrderService { public void processOrder(Order order) { // 验证订单 if (order.getAmount() < 0) { throw new IllegalArgumentException("Invalid amount"); } if (order.getCustomer() == null) { throw new IllegalArgumentException("No customer"); } // 计算折扣 double discount = 0; if (order.getAmount() &gt; 1000) { discount = 0.1; } else if (order.getAmount() &gt; 500) { discount = 0.05; } // 发送邮件 EmailService emailService = new EmailService(); emailService.sendOrderConfirmation(order.getCustomer().getEmail(), order); // 更新库存 InventoryService inventoryService = new InventoryService(); inventoryService.updateStock(order); // 保存订单 save(order); } private void save(Order order) { // 数据库保存逻辑 } }

这段代码把验证、折扣计算、邮件、库存、持久化全部塞在一个方法里。我让 AI 帮我重构:

claude "帮我重构这个 OrderService,使用单一职责原则,拆分成多个类"

AI 给出的重构方案:

// OrderValidator.java - 订单验证 public class OrderValidator { public void validate(Order order) { if (order.getAmount() < 0) { throw new IllegalArgumentException("Invalid amount"); } if (order.getCustomer() == null) { throw new IllegalArgumentException("No customer"); } } } // DiscountCalculator.java - 折扣计算 public class DiscountCalculator { public double calculate(Order order) { double amount = order.getAmount(); if (amount > 1000) return 0.1; if (amount > 500) return 0.05; return 0; } } // OrderNotifier.java - 通知服务 public class OrderNotifier { private final EmailService emailService; public OrderNotifier(EmailService emailService) { this.emailService = emailService; } public void notifyCustomer(Order order) { emailService.sendOrderConfirmation( order.getCustomer().getEmail(), order); } } // OrderService.java - 重构后的主服务 public class OrderService { private final OrderValidator validator; private final DiscountCalculator discountCalculator; private final OrderNotifier notifier; private final InventoryService inventoryService; private final OrderRepository repository; public OrderService(OrderValidator validator, DiscountCalculator discountCalculator, OrderNotifier notifier, InventoryService inventoryService, OrderRepository repository) { this.validator = validator; this.discountCalculator = discountCalculator; this.notifier = notifier; this.inventoryService = inventoryService; this.repository = repository; } public void processOrder(Order order) { validator.validate(order); double discount = discountCalculator.calculate(order); order.applyDiscount(discount); notifier.notifyCustomer(order); inventoryService.updateStock(order); repository.save(order); } }

重构后的代码职责清晰、易于测试和维护。更重要的是,AI 帮我保留了所有原有逻辑,没有遗漏任何功能。

6. 实战四:用 AI 编写单元测试

写单元测试是保证代码质量的关键,但很多人觉得枯燥。AI Coding 让测试编写变得轻松高效。下面是一个示例:

假设我们有一个简单的计算器类:

class Calculator: def add(self, a, b): return a + b def divide(self, a, b): if b == 0: raise ValueError("Cannot divide by zero") return a / b</code></pre> 让 AI 生成完整的单元测试: claude "为这个 Calculator 类生成 pytest 单元测试,覆盖正常情况和边界情况" AI 生成的测试代码: import pytest from calculator import Calculator class TestCalculator: def setup_method(self): self.calc = Calculator() def test_add_positive_numbers(self): assert self.calc.add(2, 3) == 5 def test_add_negative_numbers(self): assert self.calc.add(-2, -3) == -5 def test_add_zero(self): assert self.calc.add(0, 0) == 0 def test_divide_normal(self): assert self.calc.divide(10, 2) == 5 def test_divide_by_zero_raises(self): with pytest.raises(ValueError): self.calc.divide(10, 0) def test_divide_float_result(self): assert self.calc.divide(7, 2) == 3.5 def test_divide_negative(self): assert self.calc.divide(-10, 2) == -5</code></pre> 这些测试覆盖了正常情况、负数、零、异常等边界条件。以前我可能只写两三个测试,现在 AI 帮我考虑得更全面。 7. 实战五:用 AI 学习新技术栈 面对全新的技术栈,AI Coding 是最好的老师。它能根据你的需求,生成带详细注释的学习代码。下面以学习 TypeScript 泛型为例: claude "用 TypeScript 泛型写一个通用的缓存类,并加上详细注释,帮助我理解泛型" AI 生成的代码: /** 通用缓存类 T 是泛型参数,表示缓存值的类型 K 是键的类型,默认是 string */ class Cache<T, K extends string | number = string> { private store: Map<K, T> = new Map(); private maxSize: number; constructor(maxSize: number = 100) { this.maxSize = maxSize; } /** 存入缓存 @param key 键 @param value 值 */ set(key: K, value: T): void { // 如果超过最大容量,删除最早的元素 if (this.store.size &gt;= this.maxSize) { const firstKey = this.store.keys().next().value; this.store.delete(firstKey); } this.store.set(key, value); } /** 读取缓存 @param key 键 @returns 值或 undefined */ get(key: K): T | undefined { return this.store.get(key); } /** 删除缓存 @param key 键 */ delete(key: K): boolean { return this.store.delete(key); } /** 清空缓存 */ clear(): void { this.store.clear(); } /** 获取缓存大小 */ get size(): number { return this.store.size; } } // 使用示例 const stringCache = new Cache<string>(); stringCache.set('name', 'Alice'); console.log(stringCache.get('name')); // 输出: Alice const numberCache = new Cache<number, number>(); numberCache.set(1, 100); console.log(numberCache.get(1)); // 输出: 100 通过这种方式,我不仅学会了泛型的语法,还理解了实际应用场景。AI 的注释让我能快速掌握新知识。 实战六:用 AI 优化数据库查询 性能优化是工作中常见的挑战。AI Coding 能帮我分析慢查询并给出优化建议。下面是一个 SQL 优化案例: 原始查询(性能差): SELECT * FROM orders WHERE customer_id IN ( SELECT id FROM customers WHERE signup_date < '2020-01-01' ) AND status = 'pending' ORDER BY created_at DESC; 让 AI 分析并优化: claude "这个 SQL 查询很慢,帮我优化,orders 表有 1000 万行数据" AI 给出的优化方案: -- 优化方案 1:使用 JOIN 替代子查询 SELECT o.* FROM orders o INNER JOIN customers c ON o.customer_id = c.id WHERE c.signup_date < '2020-01-01' AND o.status = 'pending' ORDER BY o.created_at DESC; -- 优化方案 2:添加合适的索引 CREATE INDEX idx_orders_status_created ON orders(status, created_at DESC); CREATE INDEX idx_orders_customer_status ON orders(customer_id, status); CREATE INDEX idx_customers_signup ON customers(signup_date); -- 优化方案 3:只选择需要的列,避免 SELECT * SELECT o.id, o.order_number, o.amount, o.created_at FROM orders o INNER JOIN customers c ON o.customer_id = c.id WHERE c.signup_date < '2020-01-01' AND o.status = 'pending' ORDER BY o.created_at DESC LIMIT 100; AI 不仅给出了优化后的 SQL,还解释了为什么这样优化:JOIN 比子查询更高效、索引能加速过滤和排序、避免 SELECT * 减少数据传输。 实战七:用 AI 生成 API 文档 写文档是很多人不喜欢但又必须做的工作。AI Coding 能自动生成高质量的 API 文档。下面是一个示例: 原始代码: from flask import Flask, request, jsonify app = Flask(name) @app.route('/api/users', methods=['POST']) def create_user(): data = request.get_json() username = data.get('username') email = data.get('email') 保存用户到数据库 return jsonify({'id': 1, 'username': username, 'email': email}), 201 @app.route('/api/users/<int:user_id>', methods=['GET']) def get_user(user_id): 从数据库查询用户 user = {'id': user_id, 'username': 'alice', 'email': 'alice@example.com'} return jsonify(user) 让 AI 生成 API 文档: claude "为这个 Flask API 生成 OpenAPI 3.0 文档" AI 生成的文档: openapi: 3.0.0 info: title: User API version: 1.0.0 description: 用户管理 API paths: /api/users: post: summary: 创建新用户 requestBody: required: true content: application/json: schema: type: object required: username email properties: username: type: string description: 用户名 email: type: string format: email description: 邮箱地址 responses: '201': description: 用户创建成功 content: application/json: schema: type: object properties: id: type: integer username: type: string email: type: string '400': description: 请求参数错误 /api/users/{user_id}: get: summary: 获取用户信息 parameters: name: user_id in: path required: true schema: type: integer responses: '200': description: 成功返回用户信息 content: application/json: schema: type: object properties: id: type: integer username: type: string email: type: string '404': description: 用户不存在 这份文档可以直接用于 Swagger UI 或 API 网关配置,大大节省了写文档的时间。 实战八:用 AI 处理跨语言迁移 有时候我们需要把代码从一种语言迁移到另一种语言。AI Coding 能高效完成这类工作。下面是一个 Python 到 Java 的迁移示例: 原始 Python 代码: def fibonacci(n): """计算斐波那契数列的第 n 项""" if n <= 1: return n return fibonacci(n - 1) + fibonacci(n - 2) def main(): for i in range(10): print(f"fib({i}) = {fibonacci(i)}") if name == "main": main() 让 AI 迁移到 Java: claude "把这个 Python 斐波那契代码迁移到 Java,保持相同的功能" AI 生成的 Java 代码: public class Fibonacci { /** 计算斐波那契数列的第 n 项 */ public static int fibonacci(int n) { if (n &lt;= 1) { return n; } return fibonacci(n - 1) + fibonacci(n - 2); } public static void main(String[] args) { for (int i = 0; i &lt; 10; i++) { System.out.println("fib(" + i + ") = " + fibonacci(i)); } } } AI 保留了原有的递归逻辑和注释,同时遵循了 Java 的命名规范和代码风格。这种迁移工作以前需要我手动逐行翻译,现在交给 AI 几分钟就完成了。 11. 实战九:用 AI 生成数据库模型 设计数据库表结构是开发中常见的任务。AI Coding 能根据业务需求自动生成数据库模型和迁移脚本。下面是一个示例: claude "为一个电商系统设计数据库模型,包含用户、商品、订单、订单明细四个表,使用 SQLAlchemy" AI 生成的模型代码: from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey, Text from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship from datetime import datetime Base = declarative_base() class User(Base): tablename = 'users' id = Column(Integer, primary_key=True) username = Column(String(50), unique=True, nullable=False) email = Column(String(100), unique=True, nullable=False) password_hash = Column(String(255), nullable=False) created_at = Column(DateTime, default=datetime.utcnow) orders = relationship('Order', back_populates='user') class Product(Base): tablename = 'products' id = Column(Integer, primary_key=True) name = Column(String(100), nullable=False) description = Column(Text) price = Column(Float, nullable=False) stock = Column(Integer, default=0) created_at = Column(DateTime, default=datetime.utcnow) class Order(Base): tablename = 'orders' id = Column(Integer, primary_key=True) user_id = Column(Integer, ForeignKey('users.id'), nullable=False) total_amount = Column(Float, nullable=False) status = Column(String(20), default='pending') created_at = Column(DateTime, default=datetime.utcnow) user = relationship('User', back_populates='orders') items = relationship('OrderItem', back_populates='order') class OrderItem(Base): tablename = 'order_items' id = Column(Integer, primary_key=True) order_id = Column(Integer, ForeignKey('orders.id'), nullable=False) product_id = Column(Integer, ForeignKey('products.id'), nullable=False) quantity = Column(Integer, nullable=False) price = Column(Float, nullable=False) order = relationship('Order', back_populates='items') product = relationship('Product')</code></pre> AI 不仅生成了四个表的模型,还正确设置了外键关系和关联关系。这种设计工作以前需要我仔细思考表之间的关系,现在 AI 帮我考虑得很周全。 12. 实战十:用 AI 编写自动化脚本 日常工作中的重复性任务,可以用 AI 快速编写自动化脚本。下面是一个文件批量处理的示例: claude "写一个 Python 脚本,批量重命名目录下的所有图片文件,按创建时间排序,命名为 image_001.jpg 格式" AI 生成的脚本: import os import glob from datetime import datetime def rename_images(directory): """批量重命名图片文件""" 获取所有图片文件 image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp'] images = [] for ext in image_extensions: images.extend(glob.glob(os.path.join(directory, f'*{ext}'))) 按创建时间排序 images.sort(key=lambda f: os.path.getctime(f)) 重命名 for index, image_path in enumerate(images, start=1): directory_path = os.path.dirname(image_path) extension = os.path.splitext(image_path)[1] new_name = f"image_{index:03d}{extension}" new_path = os.path.join(directory_path, new_name) os.rename(image_path, new_path) print(f"Renamed: {os.path.basename(image_path)} -&amp;gt; {new_name}") if name == "main": target_dir = input("请输入图片目录路径: ") rename_images(target_dir) print("重命名完成!") 这个脚本考虑了多种图片格式、按创建时间排序、自动补零等细节。以前我需要花时间写这些脚本,现在 AI 几秒钟就搞定了。 13. 实战十一:用 AI 处理代码审查 代码审查是保证代码质量的重要环节。AI Coding 能帮我快速发现潜在问题。下面是一个示例: 假设我们有一段待审查的代码: function processUserData(userData) { const name = userData.name; const age = userData.age; const email = userData.email; if (age &gt; 18) { console.log("Adult user: " + name); } // 发送欢迎邮件 sendEmail(email, "Welcome " + name); // 保存到数据库 db.save({name: name, age: age, email: email}); return {name: name, age: age, email: email}; } 让 AI 进行代码审查: claude "审查这段 JavaScript 代码,找出潜在问题和改进建议" AI 的审查结果: // 改进后的代码 function processUserData(userData) { // 1. 添加参数校验 if (!userData || typeof userData !== 'object') { throw new Error('Invalid user data'); } const { name, age, email } = userData; // 2. 校验必填字段 if (!name || !email) { throw new Error('Name and email are required'); } // 3. 使用严格比较 if (age &gt;= 18) { console.log(Adult user: ${name}); } // 4. 使用异步处理 try { await sendEmail(email, Welcome ${name}); } catch (error) { console.error('Failed to send email:', error); } // 5. 使用参数化查询 await db.save({ name, age, email }); // 6. 返回新对象,避免修改原对象 return { name, age, email }; } AI 指出了六个改进点:参数校验、解构赋值、严格比较、模板字符串、异步错误处理、避免修改原对象。这些建议让代码更健壮、更安全。 14. 实战十二:用 AI 生成配置文件 配置各种工具和框架是开发中的常见任务。AI Coding 能根据需求生成正确的配置文件。下面是一个 Docker 配置示例: claude "为一个 Node.js + MongoDB 应用生成 Dockerfile 和 docker-compose.yml" AI 生成的配置: Dockerfile FROM node:18-alpine WORKDIR /app 复制 package.json 和 package-lock.json COPY package*.json ./ 安装依赖 RUN npm ci --only=production 复制源代码 COPY . . 暴露端口 EXPOSE 3000 启动应用 CMD ["node", "server.js"] docker-compose.yml version: '3.8' services: app: build: . ports: - "3000:3000" environment: - NODE_ENV=production - MONGODB_URI=mongodb://db:27017/myapp depends_on: - db restart: unless-stopped db: image: mongo:6 volumes: - mongo_data:/data/db restart: unless-stopped volumes: mongo_data: AI 生成的配置考虑了多阶段构建、环境变量、数据持久化、服务依赖等最佳实践。这些配置可以直接用于生产环境部署。 15. 实战十三:用 AI 处理正则表达式 正则表达式是很多人觉得难写的部分。AI Coding 能根据需求生成正确的正则表达式。下面是一个示例: claude "写一个正则表达式,验证中国大陆手机号码(11位,以1开头,第二位是3-9)" AI 生成的代码: import re 中国大陆手机号正则 phone_pattern = r'^1[3-9]\d{9}$' 测试用例 test_numbers = [ '13812345678', # 有效 '15812345678', # 有效 '19912345678', # 有效 '12812345678', # 无效(第二位是2) '1381234567', # 无效(只有10位) '138123456789', # 无效(12位) '23812345678', # 无效(不是1开头) ] for number in test_numbers: if re.match(phone_pattern, number): print(f"✓ {number} - 有效手机号") else: print(f"✗ {number} - 无效手机号") AI 不仅生成了正确的正则表达式,还提供了完整的测试用例来验证。这让我对正则表达式的正确性充满信心。 16. 实战十四:用 AI 生成数据可视化代码 数据可视化是数据分析中的重要环节。AI Coding 能快速生成图表代码。下面是一个示例: claude "用 Python matplotlib 画一个柱状图,展示某公司各季度销售额" AI 生成的代码: import matplotlib.pyplot as plt import numpy as np 数据 quarters = ['Q1', 'Q2', 'Q3', 'Q4'] sales = [120, 150, 130, 180] 创建柱状图 fig, ax = plt.subplots(figsize=(10, 6)) 绘制柱状图 bars = ax.bar(quarters, sales, color=['#4CAF50', '#2196F3', '#FF9800', '#F44336']) 添加数据标签 for bar in bars: height = bar.get_height() ax.text(bar.get_x() + bar.get_width()/2., height + 2, f'{height}万', ha='center', va='bottom', fontsize=12) 设置标题和标签 ax.set_title('2024 年各季度销售额', fontsize=16, fontweight='bold') ax.set_xlabel('季度', fontsize=12) ax.set_ylabel('销售额(万元)', fontsize=12) 设置 y 轴范围 ax.set_ylim(0, 200) 添加网格线 ax.grid(axis='y', alpha=0.3) 显示图表 plt.tight_layout() plt.show() AI 生成的代码包含了数据标签、网格线、颜色配置等细节,让图表更加专业美观。 17. 实战十五:用 AI 编写爬虫脚本 数据采集是很多项目的需求。AI Coding 能快速生成爬虫代码。下面是一个示例: claude "写一个 Python 爬虫,抓取某个新闻网站的头条新闻标题和链接" AI 生成的代码: import requests from bs4 import BeautifulSoup def fetch_headlines(url): """抓取新闻头条""" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' } try: response = requests.get(url, headers=headers, timeout=10) response.raise_for_status() except requests.RequestException as e: print(f"请求失败: {e}") return [] soup = BeautifulSoup(response.text, 'html.parser') headlines = [] 查找新闻标题(根据实际网站结构调整选择器) for item in soup.select('.news-item a, .headline a, h2 a'): title = item.get_text(strip=True) link = item.get('href') if title and link: headlines.append({'title': title, 'link': link}) return headlines if name == "main": url = "https://example-news.com" headlines = fetch_headlines(url) for i, item in enumerate(headlines[:10], 1): print(f"{i}. {item['title']}") print(f" {item['link']}")</code></pre> AI 生成的爬虫包含了请求头设置、异常处理、超时控制等最佳实践,让爬虫更稳定可靠。 18. 实战十六:用 AI 优化算法性能 算法优化是提升程序性能的关键。AI Coding 能帮我分析算法复杂度并给出优化方案。下面是一个示例: 原始代码(性能差): def find_duplicates(arr): """查找数组中的重复元素""" duplicates = [] for i in range(len(arr)): for j in range(i + 1, len(arr)): if arr[i] == arr[j] and arr[i] not in duplicates: duplicates.append(arr[i]) return duplicates 测试 arr = [1, 3, 5, 3, 7, 9, 1, 5] print(find_duplicates(arr)) # 输出: [1, 3, 5] 让 AI 优化: claude "这个查找重复元素的算法时间复杂度是 O(n²),帮我优化到 O(n)" AI 的优化方案: def find_duplicates(arr): """

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询