Day08_剑指Offer
2021/8/19 23:07:01
本文主要是介绍Day08_剑指Offer,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Day08_剑指Offer
package com.sorrymaker.day3208; /** * 是个动态规划问题。 * 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? * 示例: * 输入: [7,1,5,3,6,4] * 输出: 5 * 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 * 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。 * @Author nextGame * @Date 2021/8/19 20:37 * @Version 1.0 */ public class MaxProfit { public int maxProfit(int[] prices) { //定义cost为无穷大,利润为0; int cost =Integer.MAX_VALUE,profit=0; //遍历价格数组 for(int price:prices){ //找出价格数组里面的最小值 cost = Math.min(cost,price); //在价格数组里面,每天价格-最小值的利润中求出最大值。 profit = Math.max(profit,price-cost); } return profit; } }
package com.sorrymaker.day3208; /** * 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 * 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 * F(n ) = F(n-1) +F(n-2) ===>>> F(n+1) = F(n) + F(n-1)等价于 斐波那契数列,只不过起始数字不一样 * F(0)=1,F(1)=1,F(2)=2; * * @Author nextGame * @Date 2021/8/19 20:31 * @Version 1.0 */ public class NumWays { public int numWays(int n) { int a = 1, b = 1, sum = 0; for (int i = 0; i < n; i++) { sum = (a + b) % 1000000007; a = b; b = sum; } return a; } }
package com.sorrymaker.day3208; /** * 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: * F(0) = 0, F(1) = 1 * F(N) = F(N - 1) + F(N - 2), 其中 N > 1. * 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。 * 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 * @Author nextGame * @Date 2021/8/19 20:26 * @Version 1.0 */ public class Fib { public int fib(int n) { //F(N) = F(N-1)+F(N-2) ==>> F(n+1) = F(N) + F(N-1) int a = 0 , b=1, sum = 0; for(int i= 0;i<n;i++){ sum = (a+b)%1000000007; a = b; b = sum; } return a; } }
这篇关于Day08_剑指Offer的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南