基于java计算买卖股票的最佳时机

 更新时间:2019年10月16日 11:08:54   作者:巡山小妖N  
这篇文章主要介绍了基于java计算买卖股票的最佳时机,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了基于java计算买卖股票的最佳时机,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

问题:

可以将问题转化为如下图所示,即求多个累计的收入差

分析:

如果当前位置i的价格比i+1的价格高,则当前不是买入点,则继续判断下一个位置,

如果当前位置i的价格比i+1的价格低,并且i+1仍比i+1+1低,则在当前位置买入,知道i+n比i+n+1大时,卖出。

继续下一轮判断

package com.example.demo;

public class Test121 {

  /**
   * 多个
   *
   * @param prices
   * @return
   */
  public int maxProfit(int[] prices) {
    if (prices == null || prices.length == 0) {
      return 0;
    }
    int cur = 0;
    int vally = prices[0];
    int peak = 0;
    int income = 0;
    while (cur < prices.length - 1) {
      //找到卖出点,谷底
      while (cur < prices.length - 1 && prices[cur] >= prices[cur + 1]) {
        cur++;
      }
      vally = prices[cur];
      //找到比当前大的值(即最高点,顶峰)
      while (cur < prices.length - 1 && prices[cur] <= prices[cur + 1]) {
        cur++;
      }
      peak = prices[cur];
      income += peak - vally;
      //如果此时cur仍然没有到最后,则进行再一次循环
    }
    return income;
  }

  public static void main(String[] args) {
    Test121 t = new Test121();
    int[] arr = {7, 1, 5, 3, 6, 4};
    int i = t.maxProfit(arr);
    System.out.println(i);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java8异步调用如何使用才是最好的方式

    java8异步调用如何使用才是最好的方式

    异步调用主要用于当前程序的执行不用等待调用方法执行结束就可以继续执行,下面这篇文章主要给大家介绍了关于java8异步调用如何使用才是最好的方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • 在IntelliJ IDEA中配置SSH服务器开发环境并实现固定地址远程连接的操作方法

    在IntelliJ IDEA中配置SSH服务器开发环境并实现固定地址远程连接的操作方法

    本文主要介绍如何在IDEA中设置远程连接服务器开发环境,并结合Cpolar内网穿透工具实现无公网远程连接,然后实现远程Linux环境进行开发,本例使用的是IDEA2023.2.5版本,感兴趣的朋友跟随小编一起看看吧
    2024-01-01
  • SpringBoot+MyBatisPlus+MySQL8实现树形结构查询

    SpringBoot+MyBatisPlus+MySQL8实现树形结构查询

    这篇文章主要为大家详细介绍了SpringBoot+MyBatisPlus+MySQL8实现树形结构查询,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Java实现简易扑克牌游戏的完整实例

    Java实现简易扑克牌游戏的完整实例

    这篇文章主要介绍了Java实现简易扑克牌游戏的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • java如何使用redis加锁

    java如何使用redis加锁

    这篇文章主要介绍了java如何使用redis加锁问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • java web实现简单聊天室

    java web实现简单聊天室

    这篇文章主要为大家详细介绍了java-web实现简单聊天室,含拍一拍功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • 解析Java的JNI编程中的对象引用与内存泄漏问题

    解析Java的JNI编程中的对象引用与内存泄漏问题

    这篇文章主要介绍了Java的JNI编程中的对象引用与内存泄漏问题,重点讲述了局部和全局引用时一些值得注意的地方,需要的朋友可以参考下
    2015-11-11
  • 详解SpringBoot配置文件启动时动态配置参数方法

    详解SpringBoot配置文件启动时动态配置参数方法

    这篇文章主要介绍了详解SpringBoot配置文件启动时动态配置参数方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 如何自动生成Mybatis的Mapper文件详解

    如何自动生成Mybatis的Mapper文件详解

    这篇文章主要给大家介绍了关于如何自动生成Mybatis的Mapper文件的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • Spring Boot 发送邮件功能案例分析

    Spring Boot 发送邮件功能案例分析

    这篇文章主要介绍了 Spring Boot 发送邮件功能,本文通过代码结合案例分析给大家介绍的非常详细,需要的朋友可以参考下
    2017-11-11

最新评论