算法奇妙屋(三十六)-贪心算法学习之路3

文章目录

一. 力扣 121. 买卖股票的最佳时机

1. 题目解析

这道题很好理解, 相当于找最大值和最小值的问题

2. 算法原理

3. 代码

java 复制代码
class Solution {
    public int maxProfit(int[] prices) {
        int min = prices[0];
        int ret = 0;
        for (int i = 1; i < prices.length; i++) {
            min = Math.min(min, prices[i]);
            ret = Math.max(ret, prices[i] - min);
        }
        return ret;
    }
}

二. 力扣 122. 买卖股票的最佳时机 II

1. 题目解析

这道题相比于股票问题1, 少了个限制是, 可以多次买卖股票

2. 算法原理

这里提供两种思路, 一种是双指针, 一种是拆分交易, 时间复杂度都是O(N)

(1) 贪心+双指针

(2) 拆分交易

3. 代码

1. 算法1

java 复制代码
class Solution {
    public int maxProfit(int[] prices) {
        int n = prices.length;
        int ret = 0;
        for (int i = 0; i < n;) {
            int j = i;
            while (j < n - 1 && prices[j + 1] > prices[j]) j++;
            ret += prices[j] - prices[i];
            i = j + 1;
        }
        return ret;
    }
}

2. 算法2

java 复制代码
class Solution {
    public int maxProfit(int[] prices) {
        int n = prices.length;
        int ret = 0;
        for (int i = 0; i < n - 1; i++) {
            if (prices[i + 1] > prices[i]) {
                ret += prices[i + 1] - prices[i];
            }
        }
        return ret;
    }
}
相关推荐
刀法如飞17 小时前
Go 字符串查找的 20 种实现方式,用不同思路解决问题
算法·面试·程序员
白小沫17 小时前
TortoiseSVN是什么?
学习
weixin_4514315617 小时前
【学习笔记】微博视频页面ajax请求与响应数据分析
笔记·学习·音视频
清辞85318 小时前
尾盘选股法程序开发学习初期
学习
Century_Dragon18 小时前
让实训“活”起来——信息化综合实训考核平台助力汽车专业教学
学习
Dlrb121118 小时前
C语言-指针数组与数组指针
c语言·数据结构·算法·指针·数组指针·指针数组·二级指针
WL_Aurora18 小时前
Python 算法基础篇之集合
python·算法
平行侠19 小时前
A15 工业路由器IP前缀高速检索与内存压缩系统
网络·tcp/ip·算法
nashane19 小时前
HarmonyOS 6学习:PanGesture手势驱动月亮半圆轨迹“滚动”术
学习·harmonyos 5
叶~小兮20 小时前
K8S进阶核心综合学习笔记(持久化存储+特殊容器+调度管理)
笔记·学习·kubernetes