教育培训学校网站建设策划衡水微信网站建设
2026/4/16 16:32:39 网站建设 项目流程
教育培训学校网站建设策划,衡水微信网站建设,高端响应式网站设计,王占山 同济大学在 LeetCode 的入门题目中#xff0c;“两数之和”#xff08;Two Sum#xff09;绝对是绕不开的经典。这道题看似简单#xff0c;却能帮我们夯实数组遍历、条件判断等基础编程能力。今天就来聊聊这道题的暴力解法思路#xff0c;以及完整的 C 实现。题目回顾给定一个整数…在 LeetCode 的入门题目中“两数之和”Two Sum绝对是绕不开的经典。这道题看似简单却能帮我们夯实数组遍历、条件判断等基础编程能力。今天就来聊聊这道题的暴力解法思路以及完整的 C 实现。题目回顾给定一个整数数组nums和一个整数目标值target请你在该数组中找出和为目标值的那两个整数并返回它们的数组下标。注意每种输入只会对应一个答案。你可以假设每种输入只会对应一个答案且同一个元素不能使用两遍。你可以按任意顺序返回答案。示例输入nums [2,7,11,15], target 9输出[0,1]解释因为 nums [0] nums [1] 2 7 9所以返回 [0,1]。暴力解法思路暴力解法的核心逻辑非常直观遍历所有可能的数对检查它们的和是否等于目标值。具体步骤外层循环遍历数组中的每一个元素下标记为i从 0 开始遍历到倒数第二个元素即可因为内层会找后续元素内层循环遍历i之后的所有元素下标记为j从i1开始避免重复检查同一对数也避免使用同一个元素两次对于每一对(nums[i], nums[j])判断它们的和是否等于target一旦找到符合条件的数对立即返回它们的下标[i, j]题目保证有且仅有一个答案因此循环结束前必定能找到结果。C 代码实现cpp运行#include vector using namespace std; class Solution { public: vectorint twoSum(vectorint nums, int target) { int i, j; // 外层循环遍历到倒数第二个元素即可 for (i 0; i nums.size() - 1; i) { // 内层循环从i的下一个元素开始避免重复 for (j i 1; j nums.size(); j) { // 找到和为target的数对直接返回下标 if (nums[i] nums[j] target) { return {i, j}; } } } // 题目保证有解此处仅为语法兼容 return {i, j}; } };代码解析变量定义声明两个整型变量i和j分别作为外层和内层循环的下标外层循环i从 0 遍历到nums.size() - 2因为nums.size() - 1是最后一个元素的下标i到倒数第二个即可j会取最后一个内层循环j从i1开始遍历到数组末尾确保每个数对只检查一次条件判断若nums[i] nums[j] target直接返回包含下标i和j的 vector兜底返回题目明确有且仅有一个解因此这行代码不会被执行仅为满足函数的返回语法要求。复杂度分析时间复杂度O (n²)。外层循环执行 n 次内层循环平均执行 n/2 次总的时间复杂度为平方级。空间复杂度O (1)。仅使用了常数个临时变量没有额外开辟与输入规模相关的空间。总结暴力解法是两数之和最基础的解法优点是思路简单、代码易实现适合算法入门者理解 “遍历 匹配” 的核心思想缺点是时间效率较低当数组规模较大如 n10⁴时运行时间会显著增加。后续还可以优化为哈希表解法时间复杂度 O (n)感兴趣的同学可以继续深入研究。刷题的核心不是记住答案而是理解每一种解法的思路和适用场景逐步培养算法思维。

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

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

立即咨询