#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;
    }
};

虽然说是过了,但我觉得我写的程式不美观,不优雅。

posted @   越菜越自信  阅读(20)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示