• LeetCode简单题(四)


    题目一:

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

    设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

    注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

    示例 1:

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

    方法一:

    1、暴力法,对于这种最优问题的求解,一定要有一种思维---递归,看起来无法下手,递归往往可以帮我们解决;

    2、构造函数进行递归,递归不一定是对原函数进行递归,比如数组,就可以从第一位进行递归,多加一个参数;

    3、calculate(int [] nums,int s),递归出口:if(s>=nums.length) return 0;

    4、暴力法进行,从遍历第一个元素开始,for(int i=s,i<nums.length;i++),for(int j=i+1;j<nums.lenght;j++) profit=calculate(nums,j+1)+nums[j]=nums[i];

    具体代码:

    class Solution {
        public int maxProfit(int[] prices) {
            
            return calculate(prices, 0);
        }
    public int calculate(int[] prices,int s) { if(s>=prices.length) return 0; int max=0; for(int i=s;i<prices.length;i++) { int MaxProfit=0; for(int j=i+1;j<prices.length;j++) { if(prices[i]<prices[j]) { int profit=calculate(prices, j+1)+prices[j]-prices[i]; if(profit>MaxProfit) MaxProfit=profit; } } if(MaxProfit>max) max=MaxProfit; } return max; } }

    方法二:

    1、一次遍历,股票的买入和卖出直观上是两个数值,直接进行就是还是有一点复杂;

    2、我们试着将这个过程进行细化,如果后面的值大于前面的值,将其相减得到其值,记录,一直循环下去将所有结果相加就可以得到最后的结果。

    具体代码:

    class Solution {
        public int maxProfit(int[] prices) {
            
            int maxProfib=0;
            for(int i=1;i<prices.length;i++)
            {
                if(prices[i]>prices[i-1])
                {
                    maxProfib+=prices[i]-prices[i-1];
                }
            }        
            return maxProfib;
        }
    }
  • 相关阅读:
    1104 Sum of Number Segments (20 分)(数学问题)
    1092 To Buy or Not to Buy (20 分)(hash散列)
    1082 Read Number in Chinese (25 分)(字符串处理)【背】
    1105 Spiral Matrix (25 分)(模拟)
    初识网络安全及搭建网站(内网)
    HTML5开发者需要了解的技巧和工具汇总(转)
    native+web开发模式之web前端经验分享
    移动平台3G手机网站前端开发布局技巧汇总(转)
    Asp.net 中图片存储数据库以及页面读取显示通用方法详解附源码下载
    使用H3Viewer来查看VS2010的帮助文档
  • 原文地址:https://www.cnblogs.com/Optimism/p/11441646.html
Copyright © 2020-2023  润新知