2024.4.9 恒生笔试算法第二题

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 根据输入计算最大收益
     * @param M double浮点型 初始资金
     * @param N int整型 历史价格天数
     * @param historyPrices double浮点型一维数组 N天历史价格
     * @param K int整型 最大允许交易次数
     * @return double浮点型
     */
    public double get_max_profit (double M, int N, double[] historyPrices, int K) {
        double[][] dp = new double[K+1][N];
        for (int j=1; j<N; j++) {
            dp[0][j] = M;
        }
        for (int i=0; i<=K; i++) {
            dp[i][0] = M;
        }
        for (int i=1; i<=K; i++) {
            for (int j=1; j<N; j++) {
                double max = dp[i][j-1];
                for (int t=0; t<j; t++) {
                    double rest = dp[i-1][t]%historyPrices[t], buy = (dp[i-1][t]-rest)/historyPrices[t];
                    max = Math.max(max, buy*historyPrices[j]+rest);
                }
                dp[i][j] = max;
            }
        }
        return dp[K][N-1]-dp[0][0];
    }


    public static void main(String[] args) {
        Solution solution = new Solution();
        double maxProfit = solution.get_max_profit(10000, 7, new double[]{1.0, 2.0, 1.0, 2.0, 2.0, 3.0, 2.0}, 2);
        System.out.println(maxProfit);
    }
}

全部评论
xd,这是春招还是实习啊😢
点赞 回复 分享
发布于 2024-04-13 23:59 湖北
从0到t的迭代这块有问题,就比如 12325 k为2 123这块可以,但是 25这块就不行,从前到尾取得是最小的1
点赞 回复 分享
发布于 2024-05-24 22:00 安徽

相关推荐

03-04 18:37
已编辑
영진전문대학 Java
八股的部分忘记了,对算法的题目还大致有所印象...----------------------------&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;一面:&nbsp;&nbsp;&nbsp;&nbsp;输入:给一个“1abc2abc3abc10abc”的字符串(不是原数据,我随便举了个例子)&nbsp;&nbsp;&nbsp;&nbsp;输出:&nbsp;&nbsp;&nbsp;&nbsp;“1:abc”&nbsp;&nbsp;&nbsp;&nbsp;“2:abc”&nbsp;&nbsp;&nbsp;&nbsp;“3:abc”&nbsp;&nbsp;&nbsp;&nbsp;“10:abc”&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1&nbsp;使用StringBuffer来解决,开了两个for循环充当滑动窗口,外循环检测数字,内循环检测字母,首次进入拼接“:”----------------------------&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;二面:&nbsp;&nbsp;&nbsp;&nbsp;输入:给你&nbsp;“abcd”。&nbsp;&nbsp;&nbsp;&nbsp;输出:“abcd&nbsp;abc&nbsp;bcd&nbsp;ab&nbsp;ac&nbsp;ad&nbsp;bc&nbsp;bd&nbsp;cd&nbsp;a&nbsp;b&nbsp;c&nbsp;d”&nbsp;&nbsp;&nbsp;&nbsp;2.1&nbsp;当时输出的结果的顺序,和题目不一样。面试官要求重构代码,严格按顺序输出&nbsp;&nbsp;&nbsp;&nbsp;2.2&nbsp;第一次使用的是StringBuffer来解决,第二次使用的是滑动窗口----------------------------3.感想:七八月刷了力扣的hot100&amp;amp;150和一些codetop的高频题目,里面很多方法的api都可以复用到非原题(例如StringBuffer),建议力扣常见方法的各种api可以记一下,说不定写面试官自己给你出的题目的时候,会用上。现在有些题目都忘光了,打算本周捡起来。#春招##算法##大家都开始春招面试了吗#
查看2道真题和解析 大家都开始春招面试了吗
点赞 评论 收藏
分享
评论
点赞
10
分享

创作者周榜

更多
牛客网
牛客企业服务