D1枚举算法
一一列举所有可能的答案
也叫穷举法
例如水仙花术
右侧代码通过条件 X+Y+Z=100 得出Z
简化计算
你的代码尝试解决的问题是“两数之和”,即从数组中找到两个数,它们的和等于给定的目标值 target
,然后返回这两个数的索引。下面是你提供的代码,并指出其中的错误和需要改进的地方:
错误和改进点
-
语法错误:
-
len(nums)
应该改为nums.size()
,在 C++ 中获取 vector 的长度应该使用size()
方法。 -
条件表达式
if target = nums[i] + nums[j]
应改为if (target == nums[i] + nums[j])
,使用双等号==
进行比较,并且条件需要用括号包围。 -
return [i, j]
应改为return {i, j};
,返回值应使用花括号并以分号结束。 -
else continue
这一行是多余的,可以删除,因为循环会自动继续。
-
-
效率问题:
-
你的解决方案使用了两层循环,时间复杂度为 O(n^2),这在数组较大时效率不高。
-
可以使用哈希表(unordered_map)来优化查找效率,将时间复杂度降低到 O(n)
-
vector<int>函数返回要有返回值 return {};
相当于是给了一个 vector<>
布尔类型 == 就是在比较 ;= 是在赋值 意义完全不同!!!
最开始犯错在于 不能说 一个没问题就直接认定是素数了
要遍历下来都没问题才能确定是
cpp的平方根表达式学一下