问题描述:

Say you have an array for which the ith element is the price of a given stock on day i.If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of the stock), design an algorithm to find the maximum profit.Note that you cannot sell a stock before you buy one.Example 1:Input: [7,1,5,3,6,4]
Output: 5
Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.Not 7-1 = 6, as selling price needs to be larger than buying price.

问题解决思路:(注意题中所说的,你只能进行一次买进和卖出)

首先,对于股票来说,我们只有低价买入,高价卖出,这样才会获得最大的利润,那么反映在代码上,我们可以举一个例子

假设一个数组price={7,1,5,3,6,4} ,代表了一只股票连续六天的价格,那么,我们首先要做的就是找到最低的价格,然后我们再找到最高的价格(这里一定要注意,这里所谓的最高的价格,一定不能出现在你找到的最低的价格的前面,用这个数组来说,就是7不是最高的价格,以为时间是一去不复返的,你在第二天买进了这只股票,但你不能,再去追求昨天的价格了,得看后面的价格,这就是这个算法的核心所在,具体情况请看代码)

代码实现:

package Algorithm;//求最大利润问题就是找到峰值和峰谷
public class Example5 {public int Maxprofit(int[] array) {int min = array[0];int profit = 0;for (int i = 1;i < array.length; i++){if(array[i] > array[i-1]){profit = Math.max(profit, array[i]-min);}else{min = Math.min(min, array[i]);}}return profit;}
public static void main(String[] args) {Example5 object = new Example5();int[] array = {7,1,5,3,6,4};System.out.print(object.Maxprofit(array));}   }

总结:

要是新手对于这个问题不太理解的话,可以尝试画出一个折线图,然后利用小编的代码,去尝试进行每一步的操作,由慢到快,大家一起加油。另外,小编再给大家抛出一个问题,要是题中要求可以进行多次的买进和卖出,那么利润应该怎么算呢?

Leetcode日常刷码(5)解决最大利润问题(Java)相关推荐

  1. LeetCode日常刷题1、657、717、67

    1. 两数之和 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], ...

  2. leetcode分类刷题笔记

    leetcode分类刷题笔记--基于python3 写在前面 1.做题如果实在想不出时间复杂度比较优的解法,可以先写出暴力解法,尝试在其基础上优化 2.排序.双指针.二分等--经常可以优化时间复杂度 ...

  3. leetcode日常之x 的平方根(二分法求解)

    题目描述 ''' 给你一个非负整数 x ,计算并返回 x 的 算术平方根 . 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 . 注意:不允许使用任何内置指数函数和算符,例如 pow( ...

  4. 使用营销收款码实现共享餐厅,门店营销码快速解决客源问题

    连锁经营最大的难题就是人才.门店的复制,其实就是人才的复制.连锁企业普遍面临的难题是:人才招募难.人才培养难.人才留存难.我们必须解决的3个问题是: 第一,如何解决店长从公司干转变为自己干? 第二,如 ...

  5. 阿里云上的地铁新体验:上海地铁发布Metro大都会,可“刷码过闸”

    10月30日,上海地铁正式推出手机端APP"Metro大都会",用户只需下载APP选择开通乘车功能就能享受一系列全新的出行服务.其中包括"刷码过闸",将首先用于 ...

  6. 【Leetcode】 刷题之路1(python)

    leetcode 刷题之路1(python) 看到有大佬总结了一些相关题目,想着先刷一类. 1.两数之和 15.三数之和 16.最接近的三数之和 11.盛最多的水 18.四数之和 454.四数相加II ...

  7. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  8. apache和mysql 403_如何使用mysql(lamp)分离环境搭建dedecms织梦网站及apache服务器常见的403http状态码及其解决方法...

    一.实验环境 centos6.5+mysql5.5.32+php5.3.27 软件:DedeCMS-V5.7-GBK-SP1 本实验是使用lamp环境搭建,但mysql数据库与之分离,本实验成功的关键 ...

  9. LeetCode代码刷题(17~24)

    目录 17. 电话号码的字母组合 18. 四数之和 19. 删除链表的倒数第 N 个结点 20. 有效的括号 21. 合并两个有序链表 22. 括号生成 23. 合并K个升序链表 24. 两两交换链表 ...

最新文章

  1. Hashtable的遍历
  2. spring手动回滚
  3. 超级计算机适用于科学计算,中国科学院
  4. C#实现简单的 Ping 的功能,用于测试网络是否已经联通
  5. Java 只读集合
  6. 计组之存储系统:3、主存与CPU的链接(字扩展、位扩展、字位扩展、74LS138)
  7. 《Java8实战》-第十章笔记(用Optional取代null)
  8. JQueryEasyUI datagrid框架的基本使用
  9. 《线性代数及其应用》笔记-第三章
  10. 利用第三方rec解锁安卓手机锁屏密码
  11. 【JS】经典的对联广告代码,JS代码实现
  12. 认识机器视觉环形光源
  13. sql语句下的同比,环比操作
  14. 2. ISBN 号码
  15. vue2 - 基于Export2Excel.js导出Excel案例(js-xlsx插件二次封装使用)
  16. PAT 甲级 1018 Public Bike Management
  17. Oracle 常用 语句
  18. Rosalind Java| Complementing a Strand of DNA
  19. 项目管理系统(一)概述
  20. webgl-画三角形

热门文章

  1. HP惠普HP 6360t(68SCF)系列移动瘦客户机BIOS更新F.03版
  2. Android 过反抓包总结入门篇
  3. java面试:输出学生的成绩 (Java经典编程案例)
  4. Week20 20190708
  5. 阿里云部署开源IPPBX系统
  6. 《应用商务统计分析》第一章 线性回归(报告)
  7. 专题页面设计,怎么做更符合网站SEO?
  8. qq java w580c_哪里下载索爱W580c的手机QQ?
  9. python有哪几种文件类型_以下哪种文件类型不是用户可以创建的文件类型(      )...
  10. 监控在服务器中的作用和功能,视频安防监控服务器能实现哪些功能以及解决哪些问题呢...