#leetcode167
虎年第一天第一题
好久没写了,想说的话有好多,以至于写题解没用英文,但又没什么好说的,哎,说好的2021年终总结也没写,鸽王就是我了...
话不多说,进入正题!
题目描述
一开始我比较懵的是 给定下标从1开始的数组 和 最后一段字(是我断章取义了,理解成每个数每次只能遍历1次),
我觉得题目应该这样表述最好:返回的数组下标不能相同,比如说数组第一个数字是6,目标值是12,返回的下标
不能是[1,1],这种表达就很清晰了。
后来看了Algocasts的讲解后就很明朗了,和我一开始想的一样。因为是递增数组,可以利用对向的双指针来解题。
时间复杂度:O(n) 空间复杂度:O(1)
程式如下:
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
vector<int> s(2,-1);
int i = 0;
int j = numbers.size() - 1;
while (i < j)
{
if (numbers[i] + numbers[j] == target)
{
s[0] = i + 1;
s[1] = j + 1;
return s;//一开始没写这一行,导致的报错是 超出时间限制
}else if (numbers[i] + numbers[j] > target)
{
--j;
}else {
++i;
}
}
return s;
}
};
虽然说是过了,但我觉得我写的程式不美观,不优雅。
让思维见见世面
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端