前端算法(73)

简介: 前端算法(73)

题目

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。

在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。

返回 你能获得的 最大 利润 。

输入:prices = [7,1,5,3,6,4]
输出:7
解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。
     随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3 。
     总利润为 4 + 3 = 7 。

题目解析

思路一

我们可以记录每一天的最高价钱与买入价格,假设从第一天就买入,如果遇到有比最高价钱低的时候,则将股票在最高价钱的时候卖出,公式为:最高价钱-买入价格,卖出之后以当前的低价钱重新买入,并且更新最高价格为当前价格,直到循环结束。将所有利润相加

var maxProfit = function(prices) {
    let res = 0, max = prices[0], inNum = prices[0]
    for(let i=1;i<prices.length;i++) {
        if(prices[i]<max) {
            res += (max - inNum)
            inNum = prices[i]
            max = prices[i]
        }else{
            max = Math.max(prices[i], max)
        }
    }
    res= res + max-inNum
    return res
};

思路二

由于我们这个可以进行多次买卖,所以我们先寻找连续递增的子序列,递增的时候就往子序列加,在等出现下降就清算当前子序列的收益,并把当前值推入当前递增子序列,最后循环结束时,当前递增子序列还有值的时候在再算一下,在进行返回总收益

/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    let curincarr=[]
    let profites=0
    curincarr[0]=prices[0]
    for(let i=1;i<prices.length;i++){
        if(prices[i]-prices[i-1]>=0){
            curincarr.push(prices[i])
        }else{
            profites+=(curincarr[curincarr.length-1]-curincarr[0])
            curincarr=[]
            curincarr.push(prices[i])
        }
    }
    profites+=(curincarr[curincarr.length-1]-curincarr[0])
    return profites
};



目录
打赏
0
0
0
0
1
分享
相关文章
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
330 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
374 3
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
一文了解分而治之和动态规则算法在前端中的应用
该文章详细介绍了分而治之策略和动态规划算法在前端开发中的应用,并通过具体的例子和LeetCode题目解析来说明这两种算法的特点及使用场景。
一文了解分而治之和动态规则算法在前端中的应用
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
96 0
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
本文介绍了一个基于用户画像和协同过滤算法的音乐推荐系统,使用Django框架、Bootstrap前端和MySQL数据库构建,旨在为用户提供个性化的音乐推荐服务,提高推荐准确性和用户满意度。
631 7
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
一文了解贪心算法和回溯算法在前端中的应用
该文章深入讲解了贪心算法与回溯算法的原理及其在前端开发中的具体应用,并通过分析LeetCode题目来展示这两种算法的解题思路与实现方法。
"揭秘Vue.js的高效渲染秘诀:深度解析Diff算法如何让前端开发快人一步"
【8月更文挑战第20天】Vue.js是一款备受欢迎的前端框架,以其声明式的响应式数据绑定和组件化开发著称。在Vue中,Diff算法是核心之一,它高效计算虚拟DOM更新时所需的最小实际DOM变更,确保界面快速准确更新。算法通过比较新旧虚拟DOM树的同层级节点,递归检查子节点,并利用`key`属性优化列表更新。虽然存在局限性,如难以处理跨层级节点移动,但Diff算法仍是Vue高效更新机制的关键,帮助开发者构建高性能Web应用。
151 1
基于朴素贝叶斯算法的新闻类型预测,django框架开发,前端bootstrap,有爬虫有数据库
本文介绍了一个基于Django框架和朴素贝叶斯算法开发的新闻类型预测系统,该系统具备用户登录注册、后台管理、数据展示、新闻分类分布分析、新闻数量排名和新闻标题预测等功能,旨在提高新闻处理效率和个性化推荐服务。
优化算法在前端性能提升中的应用
随着互联网应用的日益复杂,前端性能优化成为开发者关注的焦点。本文探讨了优化算法在前端性能提升中的重要作用,包括对JavaScript代码的优化、资源加载的算法选择以及页面渲染的优化策略。通过合理应用优化算法,可以有效提升前端应用的性能和用户体验。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等