前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode每日一题Day1——买卖股票的最佳时机

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

作者头像
命运之光
发布2024-03-20 12:53:08
970
发布2024-03-20 12:53:08
举报
文章被收录于专栏:我在本科期间写的文章

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

正确代码

代码语言:javascript
复制
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.调试代码出现错误
代码语言:javascript
复制
#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 类型。

以下是修改后的代码:

代码语言:javascript
复制
#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的上写题对规则不是很了解。

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

代码语言:javascript
复制
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 时找不到对应的函数名。

修改后的最终代码为:
代码语言:javascript
复制
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;
    }
};

✨结语

再接再厉,继续加油!

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LeetCode每日一题Day1——买卖股票的最佳时机
  • 正确代码
  • 错误总结
    • 1.调试代码出现错误
      • 错误原因:
        • 2.第一次在leetcode的上写题对规则不是很了解。
          • 错误原因:
            • 修改后的最终代码为:
            • ✨结语
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档