有一个同学在学习分式。他需要将一个连分数化成最简分数,你能帮助他吗?

连分数是形如上图的分式。在本题中,所有系数都是大于等于0的整数。

输入的cont代表连分数的系数(cont[0]代表上图的a0,以此类推)。返回一个长度为2的数组[n, m],使得连分数的值等于n / m,且n, m最大公约数为1。

示例 1:

输入:cont = [3, 2, 0, 2]
输出:[13, 4]
解释:原连分数等价于3 + (1 / (2 + (1 / (0 + 1 / 2))))。注意[26, 8], [-13, -4]都不是正确答案。

示例 2:

输入:cont = [0, 0, 3]
输出:[3, 1]
解释:如果答案是整数,令分母为1即可。

限制:

cont[i] >= 0
1 <= cont的长度 <= 10
cont最后一个元素不等于0
答案的n, m的取值都能被32位int整型存下(即不超过2 ^ 31 - 1)。

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


这个题确实不算难,不过还涉及到GCD和LCM的计算
以及如何用分子分母来表示一个分数的问题

    public int[] fraction(int[] cont) {int n = cont.length;Num fractionNum = new Num(cont[n - 1], 1);for (int i = n - 2; i >= 0; i--) {Num a_i = new Num(cont[i], 1);fractionNum.reverse();fractionNum = plus(fractionNum, a_i);}int[] ans = new int[2];ans[0] = fractionNum.molecular;ans[1] = fractionNum.denominator;return ans;}private Num plus(Num a, Num b) {int lcm = getLCM(a.denominator, b.denominator);int molecular = lcm / a.denominator * a.molecular+ lcm / b.denominator * b.molecular;int gcd = getGCD(lcm, molecular);return new Num(molecular / gcd, lcm / gcd);}//最大公约数private int getGCD(int a, int b) {if (b == 0) {return a;}return a % b == 0 ? b : getGCD(b, a % b);}//最小公倍数private int getLCM(int a, int b) {return a * b / getGCD(a, b);}private class Num {int molecular;int denominator;public Num(int _molecular, int _denominator) {molecular = _molecular;denominator = _denominator;}public void reverse() {int temp = molecular;molecular = denominator;denominator = temp;}}

相关参考阅读:
求最大公约数和最大公倍数(Java算法)

LeetCode-Algorithms-[Easy]LCP 02. 分式化简相关推荐

  1. LCP 02. 分式化简-数学推导

    LCP 02. 分式化简-数学推导 有一个同学在学习分式.他需要将一个连分数化成最简分数,你能帮助他吗? 连分数是形如上图的分式.在本题中,所有系数都是大于等于0的整数. 输入的cont代表连分数的系 ...

  2. 【Python】【难度:简单】Leetcode LCP 02. 分式化简

    有一个同学在学习分式.他需要将一个连分数化成最简分数,你能帮助他吗? 连分数是形如上图的分式.在本题中,所有系数都是大于等于0的整数. 输入的cont代表连分数的系数(cont[0]代表上图的a0,以 ...

  3. #力扣 LeetCode LCP 02. 分式化简 @FDDLC

    题目描述: https://leetcode-cn.com/problems/deep-dark-fraction/ Java代码: class Solution { //所有系数都是大于等于0的整数 ...

  4. 【简单】LCP 02. 分式化简

    [题目] 有一个同学在学习分式,他需要将一个连分数化成最简分数,你能帮助他吗? 连分数是形如上图的分式,在本题中,所有系数都是大于等于0的整数.输入的cont代表连分数的系数(cont[0]代表上图的 ...

  5. 力扣杯-竞赛合集-LCP 02. 分式化简

    有一个同学在学习分式.他需要将一个连分数化成最简分数,你能帮助他吗? 连分数是形如上图的分式.在本题中,所有系数都是大于等于0的整数. 输入的cont代表连分数的系数(cont[0]代表上图的a0,以 ...

  6. LCP 02. 分式化简

    非递归: class Solution {public:vector<int> fraction(vector<int>& cont) {int high=1,low= ...

  7. Leetcode 02.分式化简

    LCP 02. 分式化简 难度简单 有一个同学在学习分式.他需要将一个连分数化成最简分数,你能帮助他吗? 连分数是形如上图的分式.在本题中,所有系数都是大于等于0的整数. 输入的cont代表连分数的系 ...

  8. 求解leetcode分式化简

    #include <stdio.h>//leetcode 分式化简int arr[2]; int* fraction(int* cont, int contSize, int* retur ...

  9. 分式化简结果要求_初二数学期末复习,分式考点归纳,考点较多,解答要谨慎...

    期末考试马上就要来临了,作为初二的学生,分式这部分的内容考试中考点还是比较多的,选择题,填空题,解答题都会有题目出现,这部分的考点主要有分式有无意义的条件,分式值为0的条件,分式的概念,分式化简求值类 ...

最新文章

  1. 一个高效的内存池实现
  2. java 时间戳验证_Java中带有时间戳的数字签名
  3. nginx 日志获取不到远程访问ip问题解决
  4. SpringBoot 路径访问控制
  5. 初级中级高级_初级职位,(半)高级职位
  6. Android之用 ExpandableListView使用解析(三级列表的实现)
  7. 关于检测手机信号强度,wifi信号强度以及检测周围wifi热点的一个小例子
  8. 开发者须知:哪些广告最让用户感到厌烦
  9. 关于嵌入式Linux做底层还是应用,要掌握什么技能
  10. 蝶形算法 matlab,FFT快速傅里叶变换(蝶形算法)详解
  11. linux下开发51单片机
  12. Codeforces 480D Parcels 动态规划
  13. 数据仓库指北(文末附PDF下载)
  14. Ecowalker充气足球门,为青少年足球训练保驾护航!
  15. 小布老师-PL_SQL(第六讲)
  16. 惊闻Oracle收购Sun
  17. 82.使用vue后怎么针对搜索引擎做SEO优化?
  18. [SCOI2007]降雨量 线段树和区间最值(RMQ)问题
  19. ROS通信机制一---话题通信
  20. oracle 修改时间字段的格式

热门文章

  1. python logging模块-写日志、log回滚
  2. VOLTE学习笔记(二)——IMS相关标识及SIP知识
  3. 传微软亚研院停招国防七子+北邮实习生,18所「实体清单」高校也在劫难逃?...
  4. android camera 动画,android高仿小米时钟(使用Camera和Matrix实现3D效果)
  5. 部署服务器一揽子操作记录
  6. 群晖NAS简介(转)
  7. 算法之Sunday算法
  8. 7-1 求圆面积 (10分)
  9. 华为云桌面解决方案,打造安全高效办公新体验
  10. 阿里云服务器配置(三)