zoukankan      html  css  js  c++  java
  • Largest value of the expression

    package _interview_question
    
    /**
     * You are given a list of non-negative integers.
     * Find the largest value of the expression you can get by using +, * and ( ) operators.
    Example:
    Input: [1, 2, 1, 2]
    Output: 9
    Explanation: (1 + 2) * (1 + 2) = 9
    Follow-up:
    Negative values are allowed.
     * */
    class Solution17 {
        /*
        * solution: DP, Top-Down, Time:O(n^2), Space:O(n^2)
        * */
        fun largestValue(nums: IntArray): Int {
            if (nums == null || nums.isEmpty()) {
                return 0
            }
            val n = nums.size
            val dp = Array(n) { IntArray(n) { Int.MIN_VALUE } }
            return help(nums, 0, n - 1, dp)
        }
    
        private fun help(nums: IntArray, l: Int, r: Int, dp: Array<IntArray>): Int {
            if (l == r) {
                return nums[l]
            }
            if (dp[l][r] != Int.MIN_VALUE) {
                return dp[l][r]
            }
            var result = 0
            for (i in 0 until r - l) {
                /*
                * sum up and multiply each number one by one then find out the maximum value, for example:1,2,3,4:
                * 1+2,1+3,1+4,2+3,2+4...
                * */
                result = Math.max(result, help(nums, l, l + i, dp) + help(nums, l + i + 1, r, dp))
                result = Math.max(result, help(nums, l, l + i, dp) * help(nums, l + i + 1, r, dp))
            }
            dp[l][r] = result
            return result
        }
    }
  • 相关阅读:
    Alpha冲刺博客集
    Alpha冲刺——第一天
    团队项目需求分析
    结对第二次作业
    项目选题报告
    随笔2 PAT1001.A+B Format (20)
    随笔1 大一下学期自我目标
    大数
    列变位法解密--百度之星B题
    hdu1874 畅通工程续 dijkstra 最短路
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14179247.html
Copyright © 2011-2022 走看看