1. 题目

给定一组正整数,相邻的整数之间将会进行浮点除法操作。例如, [2,3,4] -> 2 / 3 / 4 。

但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。你需要找出怎么添加括号,才能得到最大的结果,并且返回相应的字符串格式的表达式。你的表达式不应该含有冗余的括号

示例:
输入: [1000,100,10,2]
输出: "1000/(100/10/2)"
解释:
1000/(100/10/2) = 1000/((100/10)/2) = 200
但是,以下加粗的括号 "1000/((100/10)/2)" 是冗余的,
因为他们并不影响操作的优先级,所以你需要返回 "1000/(100/10/2)"。其他用例:
1000/(100/10)/2 = 50
1000/(100/(10/2)) = 50
1000/100/10/2 = 0.5
1000/100/(10/2) = 2说明:
输入数组的长度在 [1, 10] 之间。
数组中每个元素的大小都在 [2, 1000] 之间。
每个测试用例只有一个最优除法解。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/optimal-division
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 数学

  • a/b/c/da/b/c/da/b/c/d 要结果最大,第一个数 aaa 为分子,要使分母最小
  • 考虑分母 b/c/db/c/db/c/d
  • (b/c)/d=b/cd(b/c)/d = b/cd(b/c)/d=b/cd
  • b/(c/d)=bd/cb/(c/d)=bd/cb/(c/d)=bd/c
  • 1d−d1,d>1\frac{1}{d} - \frac{d}{1}, d > 1d1​−1d​,d>1, 所以第一项比较小,所以先除左边的可以最小
  • 让分母后面的数,顺次相除即可,将除分子外的所有数括号括起来
class Solution {public:string optimalDivision(vector<int>& nums) {string ans;int i = 0;if(nums.size() <= 2){while(i < nums.size()){ans += to_string(nums[i++])+"/";}ans.pop_back();return ans;}ans += to_string(nums[0])+"/(";for(i = 1; i < nums.size(); ++i){ans += to_string(nums[i])+"/";}ans.pop_back();ans.push_back(')');return ans;}
};

LeetCode 553. 最优除法(数学)相关推荐

  1. leetcode 553. Optimal Division | 553. 最优除法(暴力递归->傻缓存)

    题目 https://leetcode-cn.com/problems/optimal-division/description/ 题解 两个dp表相互依赖,没继续往后推自底向上的递归. 这题填dp的 ...

  2. LeetCode中等题之最优除法

    题目 给定一组正整数,相邻的整数之间将会进行浮点除法操作.例如, [2,3,4] -> 2 / 3 / 4 . 但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级.你需要找出怎么添加括 ...

  3. 力扣解法汇总553-最优除法

    原题链接:力扣 描述: 给定一组正整数,相邻的整数之间将会进行浮点除法操作.例如, [2,3,4] -> 2 / 3 / 4 . 但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级.你 ...

  4. leetcode算法题--最优除法

    原题链接:https://leetcode-cn.com/problems/optimal-division/ class Solution {public:string optimalDivisio ...

  5. LeetCode 441. 排列硬币(数学解方程)

    1. 题目 你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币. 给定一个数字 n,找出可形成完整阶梯行的总行数. n 是一个非负整数,并且在32位有符号整型的范围 ...

  6. LeetCode 396. 旋转函数(数学)

    1. 题目 给定一个长度为 n 的整数数组 A . 假设 Bk 是数组 A 顺时针旋转 k 个位置后的数组,我们定义 A 的"旋转函数" F 为: F(k) = 0 * Bk[0] ...

  7. LeetCode 1739. 放置盒子(数学)

    文章目录 1. 题目 2. 解题 1. 题目 有一个立方体房间,其长度.宽度和高度都等于 n 个单位. 请你在房间里放置 n 个盒子,每个盒子都是一个单位边长的立方体.放置规则如下: 你可以把盒子放在 ...

  8. LeetCode 573. 松鼠模拟(数学)*

    文章目录 1. 题目 2. 解题 1. 题目 现在有一棵树,一只松鼠和一些坚果.位置由二维网格的单元格表示. 你的目标是找到松鼠收集所有坚果的最小路程,且坚果是一颗接一颗地被放在树下. 松鼠一次最多只 ...

  9. LeetCode 829. 连续整数求和(数学)

    1. 题目 给定一个正整数 N,试求有多少组连续正整数满足所有数字之和为 N? 示例 1: 输入: 5 输出: 2 解释: 5 = 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 ...

最新文章

  1. java linkedlist 查找_Java中LinkedList真的是查找慢增删快
  2. 解放你内心的自然领袖,从你的内心而非你的自我来领导你自己
  3. JButton的setRollover出现的奇怪问题
  4. 关于HOOK API Lib 0.1 For Delphi
  5. 18岁初中毕业学Java_刚满十八 初中毕业 java自学完了 没学历 该怎么办?
  6. C语言中队列、堆栈、内存映射、多线程概念
  7. android线性布局快捷键,【整理】Android图形界面知识学习与总结之:Linear Layout线性布局...
  8. 对于 Netty ByteBuf 的零拷贝(Zero Copy) 的理解
  9. ar开发 ue4_UE4 和 ARKit 入门
  10. 《你不知道的JavaScript》-- 精读(一)
  11. Python学习之购物车
  12. 解决 spring cloud git config 配置中心多环境问题
  13. 关于Microsoft office深色模式设置
  14. 推荐几个后台管理界面
  15. 三阶魔方大中小魔公式_三阶魔方花样玩法 公式汇总大全
  16. RecyclerView三种布局下的上拉加载 下拉刷新
  17. 快速查看网页元素的CSS样式
  18. laravel + xampp 除了根目录其他路由都是404的解决方法
  19. 移远NB模组(BC26)OPENCPU开发——MQTT上传接收
  20. 计算机编程语言发展简史

热门文章

  1. linux驱动 cdev,inode结构体
  2. file_operations结构体分析 (设备文件的操作)
  3. Halcon—Tuple中符号的含义
  4. mysql 按照两个字段之和进行排序
  5. 【娱乐】收录各种神奇知乎问答
  6. python调用其他程序或脚本方法(转)
  7. JAVA软件工程师应该具备的技能有哪些?
  8. 大学英语四六各项分值
  9. Matlab编程学习笔记【待续】
  10. 什么是BSP工程师?