前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Leetcode-121.买卖股票的最佳时机 -125.验证回文串】

【Leetcode-121.买卖股票的最佳时机 -125.验证回文串】

作者头像
YoungMLet
发布2024-03-01 09:19:59
890
发布2024-03-01 09:19:59
举报
文章被收录于专栏:C++/Linux

Leetcode-121.买卖股票的最佳时机

题目:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

输入:[7, 1, 5, 3, 6, 4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6 - 1 = 5 。 注意利润不能是 7 - 1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

这道题的思路如果使用两次循环,会超出时间限制;所以这道题的思路是贪心法,我对贪心法的理解是,遇到哪个大/小的,即符合条件的,就把之前的值换掉,更新成当前大/小的值;

代码语言:javascript
复制
		int maxProfit(int* prices, int pricesSize)
		{
		    //初始化最大利润max为0,最小买入的股票价格为第一天的价格
		    int max = 0;
		    int minprices = prices[0];
		
		    //遍历一次,若遇到比第一天买入的股票价格小的minprices,就更新minprices
		    //若遇到比最大利润max更大的,就更新max;其中,利润 = 当天股票的价格 - 买入的股票价格
		    for (int i = 0; i < pricesSize; i++)
		    {
		        minprices = minprices > prices[i] ? prices[i] : minprices;
		
		        max = prices[i] - minprices > max ? prices[i] - minprices : max;
		    }
		    return max;
		}

Leetcode-125.验证回文串

题目: 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后, 短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。

输入: s = “A man, a plan, a canal: Panama” 输出:true 解释:“amanaplanacanalpanama” 是回文串。

我们的思路是双指针,一个从前往后遍历,一个从后往前遍历,首先定义一个函数过滤非字母数字字符,比较过滤后的字符是否相等,相等返回true,否则返回false;一定要注意:是非字母数字字符!!字母和数字都属于字母数字字符!还有一定要保证过滤完非字母数字字符再比较!!!

代码语言:javascript
复制
		bool judge(char* ch)
		{
		    //判断是否是空格
		    if (isspace(*ch))
		        return false;
		
		    //判断是否是除了数字和字母以外的符号
		    if (*ch < '0' || (*ch > '9' && *ch < 'A') || (*ch > 'Z' && *ch < 'a') || *ch > 'z')
		        return false;
		
		    //大写转小写
		    if (isupper(*ch))
		    {
		        *ch = *ch + 32;
		    }
		    return true;
		}
		
		bool isPalindrome(char* s)
		{
		    int len = strlen(s);
		    int j = len - 1;
		    int i = 0;
		    while (i < j)
		    {
		        //judge函数过滤非字母数字字符
		        if (!judge(&s[i]))
		        {
		            i++;
		            continue;
		        }
		        if (!judge(&s[j]))
		        {
		            j--;
		            continue;
		        }
		        //过滤之后的字符比较,不相等就返回false
		        if (s[i++] != s[j--])
		            return false;
		    }
		    return true;
		}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-29,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Leetcode-121.买卖股票的最佳时机
  • Leetcode-125.验证回文串
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档