1. 题目解析与核心思路
这两道算法题是LeetCode上经典的数组操作题目,虽然看似简单,但蕴含着算法设计的基础思想。我们先分别理解题目要求:
1.1 两数之和问题
给定一个整数数组nums和一个目标值target,要求在数组中找到两个数,使它们的和等于target,并返回这两个数的索引。题目保证每种输入只会对应一个答案,且同一个元素不能使用两次。
示例:
输入:nums = [2,7,11,15], target = 9
输出:[0,1](因为nums[0] + nums[1] = 2 + 7 = 9)
1.2 存在重复元素问题
给定一个整数数组nums,判断是否存在重复元素。如果任意一值在数组中出现至少两次,返回true;如果数组中每个元素都不相同,则返回false。
示例:
输入:nums = [1,2,3,1]
输出:true
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 暴力解法与优化思路
2.1 两数之和的暴力解法
最直观的解法是双重循环遍历所有可能的数对组合:
python复制def twoSum(nums, target):
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
时间复杂度:O(n²) - 对于n个元素的数组,最坏情况下需要检查n(n-1)/2对组合
空间复杂度:O(1) - 只使用了常数级别的额外空间
2.2 存在重复元素的暴力解法
同样可以使用双重循环检查每对元素:
python复制def containsDuplicate(nums):
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i] == nums[j]:
return True
return False
时间复杂度:O(n²)
空间复杂度:O(1)
提示:虽然暴力解法简单直接,但在处理大规模数据时效率
