LeetCode每日一题Day1——买卖股票的最佳时机

✨博主:命运之光

🦄专栏:算法修炼之练气篇(C\C++版)

🍓专栏:算法修炼之筑基篇(C\C++版)

🐳专栏:算法修炼之练气篇(Python版)

✨博主的其他文章:点击进入博主的主页 

前言:欢迎来到这个LeetCode每日算法题专栏!

🌊无论你是编程新手还是有一定经验的开发者,掌握算法和数据结构都是成功的关键。在这个专栏里,我将每天为你分享一道算法题,并提供简单易懂的解析和讲解。

☀️通过每日挑战,你将逐渐培养解决问题的思维方式,掌握重要的编程技巧。无论是面试准备还是日常编码,这些知识都将对你大有裨益。

🎉让我们一起开始这段充满乐趣和成长的学习之旅吧!希望你能从中受益,开拓编程的新视野!

目录

LeetCode每日一题Day1——买卖股票的最佳时机

正确代码

错误总结

1.调试代码出现错误

错误原因:

2.第一次在leetcode的上写题对规则不是很了解。

错误原因:

修改后的最终代码为:

✨结语


LeetCode每日一题Day1——买卖股票的最佳时机

正确代码

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int minn = prices[0];
        int ans = 0;
        for (int i = 0; i < prices.size(); i++) {
            minn = min(minn, prices[i]);
            ans = max(ans, prices[i] - minn);
        }
        return ans;
    }
};

错误总结

1.调试代码出现错误

#include<bits/stdc++.h>
using namespace std;
class Solution{
	public:
		int promit(vector<int>& prices){
			int minn=prices[0];
			int ans=0;
			for(int i=0;i<prices.size();i++){
				minn=min(minn,prices[i]);
				ans=max(ans,prices[i]-minn);
			}
			return ans;
		}
};

int main()
{
	Solution s;
	int n;
	cin>>n;
	vector<int> p;
	for(int i=0;i<n;i++)
	{
		cin>>p[i];
		}	
	cout<<s.promit( p);
	return 0;
}

错误原因:

代码中有两处问题:

  1. 在使用 vector<int> p; 创建向量 p 后,没有为其分配内存空间,所以无法直接通过 cin >> p[i]; 来读取元素。
  2. 没有包含 #include <vector> 头文件,导致编译器无法识别 vector 类型。

以下是修改后的代码:

#include <iostream>
#include <vector> // 添加vector头文件

using namespace std;

class Solution {
public:
    int promit(vector<int>& prices) {
        int minn = prices[0];
        int ans = 0;
        for (int i = 0; i < prices.size(); i++) {
            minn = min(minn, prices[i]);
            ans = max(ans, prices[i] - minn);
        }
        return ans;
    }
};

int main() {
    Solution s;
    int n;
    cin >> n;
    vector<int> p(n); // 为向量p分配n个元素的空间
    for (int i = 0; i < n; i++) {
        cin >> p[i];
    }
    cout << s.promit(p);
    return 0;
}

修改后的代码已经可以正常运行,可以输入 n 和 p 数组的元素,并输出结果。注意在使用 vector<int> p(n); 时,我们为向量 p 分配了 n 个元素的空间,因此可以通过 p[i] 来访问每个元素。

2.第一次在leetcode的上写题对规则不是很了解。

我将成功的代码复制上去后报了一个错误。

class Solution {
public:
    int promit(vector<int>& prices) {
        int minn = prices[0];
        int ans = 0;
        for (int i = 0; i < prices.size(); i++) {
            minn = min(minn, prices[i]);
            ans = max(ans, prices[i] - minn);
        }
        return ans;
    }
};

报了一个这个错误Line 19: Char 28: error: no member named 'maxProfit' in 'Solution' int ret = Solution().maxProfit(param_1); return ret; ~~~~~~~~~~ ^ 1 error generated.

错误原因:

根据报错信息看来,问题出在调用函数 maxProfit 上。实际上,在你的代码中,并没有定义 maxProfit 函数,而是定义了 promit 函数。因此,报错是因为在调用 maxProfit 时找不到对应的函数名。

修改后的最终代码为:

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int minn = prices[0];
        int ans = 0;
        for (int i = 0; i < prices.size(); i++) {
            minn = min(minn, prices[i]);
            ans = max(ans, prices[i] - minn);
        }
        return ans;
    }
};

✨结语

再接再厉,继续加油!


本章的内容就到这里了,觉得对你有帮助的话就支持一下博主把~

🌌点击下方个人名片,交流会更方便哦~
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

命运之光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值