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

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

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, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

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

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;一定要注意:是非字母数字字符!!字母和数字都属于字母数字字符!还有一定要保证过滤完非字母数字字符再比较!!!

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;
    }
目录
相关文章
|
3月前
|
算法 Python
【Leetcode刷题Python】309. 最佳买卖股票时机含冷冻期
解决LeetCode上309题“最佳买卖股票时机含冷冻期”的Python代码示例,利用动态规划方法计算在含有冷冻期约束下的最大利润。
44 1
|
1月前
【LeetCode 40】98.验证二叉搜索树
【LeetCode 40】98.验证二叉搜索树
11 0
|
3月前
|
Python
【Leetcode刷题Python】946. 验证栈序列
LeetCode题目“946. 验证栈序列”的Python解决方案,通过模拟栈的压入和弹出操作来验证给定的两个序列是否能通过合法的栈操作得到。
30 6
|
3月前
|
Python
【Leetcode刷题Python】131. 分割回文串
LeetCode题目131的Python编程解决方案,题目要求将给定字符串分割成所有可能的子串,且每个子串都是回文串,并返回所有可能的分割方案。
22 2
|
3月前
|
算法 Python
【Leetcode刷题Python】121. 买卖股票的最佳时机
解决LeetCode上121题“买卖股票的最佳时机”的Python代码示例,采用一次遍历的方式寻找最佳买卖时机以获得最大利润。
62 1
|
3月前
|
算法
leetcode188 买卖股票的最佳时机IV
leetcode188 买卖股票的最佳时机IV
64 0
|
3月前
|
算法 Python
【Leetcode刷题Python】714. 买卖股票的最佳时机含手续费
提供了两种解决买卖股票最佳时机含手续费问题的Python实现方法:贪心算法和动态规划算法。
47 0
|
3月前
|
算法 Python
【Leetcode刷题Python】122.买卖股票的最佳时机 II
LeetCode "买卖股票的最佳时机 II" 问题的Python代码实现,采用贪心算法在股票价格上升的每一天买入并卖出,以获得最大利润。
21 0
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
118 2