Typesetting math: 100%

算法面试通关40讲 - 番外 - 数组/抽象

1. 两数之和

space: O(n)
time: O(n)

class Solution {
    using index = pair<int, int>;
    static bool compare(index a, index b) { return a.second < b.second; }

   public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<index> indices;
        for (int i = 0; i < nums.size(); ++i) {
            indices.push_back({i, nums[i]});
        }
        sort(indices.begin(), indices.end(), compare);
        //                   v v j
        //   1 2 3 4 5 6 7 8 8 10
        // i ^ ^
        int targetright{};
        vector<int> ans = {0, 0};
        for (int i = 0, j = indices.size() - 1; i < j; ++i) {
            int targetj = target - indices[i].second;
            while (targetj < indices[j].second && i < j) {
                --j;
            }
            if (targetj == indices[j].second && i < j) {
                ans[0] = indices[i].first;
                ans[1] = indices[j].first;
                break;
            }
        }
        return ans;
    }
};
169. 多数元素

space: O(1)
time: O(n)

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int standout = 0;
        int num {};
        for (int n: nums) {
            if (standout == 0) {
                num = n;
            }
            if (n == num) {
                ++standout;
            } else {
                --standout;
            }
        }
        return num;
    }
};
121. 买卖股票的最佳时机

space: O(1)
time: O(n)

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        //
        //    /                    /\/
        //   /       /\         /\/
        //  /       /  \/     /
        //         /         /
        //                  /
        int low {INT_MAX};
        int profit {};
        for (int price: prices) {
            if (price < low) {
                low = price;
            } else {
                profit = std::max(profit, price - low);
            }
        }
        return profit;
    }
};
posted @   joel-q  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示