2245.转角路径的乘积中最多能有几个尾随零

  • 2245.转角路径的乘积中最多能有几个尾随零
  • 题解
  • 代码

2245.转角路径的乘积中最多能有几个尾随零

2245.转角路径的乘积中最多能有几个尾随零

题解

题目:只能转一次,求路径中每个元素相乘的结果有几个零

思路:

  1. 正数的乘积结果中尾 0 的个数由乘数中 因子 2,5 的个数中较小的决定,即 尾随零=min(num2,num5)
  2. 路径要么是横,竖,要么是UL,UR,DL,DR
  3. 用前缀和维护每一行和每一列因子 22 与因子 55 的数量
  4. 枚举拐点(i,j)计算答案

代码

func maxTrailingZeros(grid [][]int) int {//初始化n := len(grid)m := len(grid[0])factor := make([][]pair, n+1) //2和5的数量x := make([][]pair, n+1)      //列 xy := make([][]pair, n+1)      //行 yfor i := 0; i <= len(grid); i++ {factor[i] = make([]pair, m+1)x[i] = make([]pair, m+1)y[i] = make([]pair, m+1)}//计算前缀和for i := 1; i <= n; i++ {for j := 1; j <= m; j++ {factor[i][j] = getRes(grid[i-1][j-1])x[i][j].two = x[i-1][j].two + factor[i][j].twox[i][j].five = x[i-1][j].five + factor[i][j].fivey[i][j].two = y[i][j-1].two + factor[i][j].twoy[i][j].five = y[i][j-1].five + factor[i][j].five}}//计算答案ans := 0for i := 1; i <= n; i++ {for j := 1; j <= m; j++ {upAndLeft := min(x[i][j].two+y[i][j].two-factor[i][j].two, x[i][j].five+y[i][j].five-factor[i][j].five)upAndRight := min(x[i][j].two+y[i][m].two-y[i][j].two, x[i][j].five+y[i][m].five-y[i][j].five)downAndLeft := min(x[n][j].two+y[i][j].two-x[i][j].two, x[n][j].five+y[i][j].five-x[i][j].five)downAndRight := min(x[n][j].two+y[i][m].two-x[i-1][j].two-y[i][j].two, x[n][j].five+y[i][m].five-x[i-1][j].five-y[i][j].five)ans = max(ans, upAndLeft)ans = max(ans, upAndRight)ans = max(ans, downAndLeft)ans = max(ans, downAndRight)}}return ans
}
func getRes(val int) pair {two, five := 0, 0a, b := val, valfor a%2 == 0 && a != 0 {a /= 2two++}for b%5 == 0 && b != 0 {b /= 5five++}return pair{two: two, five: five}
}
func min(i, j int) int {if i > j {return j}return i
}
func max(i, j int) int {if i > j {return i}return j
}

golang力扣leetcode 2245.转角路径的乘积中最多能有几个尾随零相关推荐

  1. Leecode 第 289 场周赛 6072. 转角路径的乘积中最多能有几个尾随零 前缀和

    原题链接:6072. 转角路径的乘积中最多能有几个尾随零 参考的周赛大佬代码,我只能说"妙啊,秒啊"要变成妙蛙种子了,大佬们的代码就是写的漂亮简洁,要多看别人的代码学习: clas ...

  2. [Golang]力扣Leetcode - 374. 猜数字大小(二分查找)

    [Golang]力扣Leetcode - 374. 猜数字大小(二分查找) 题目:猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字. 请你猜选出的是哪个数字. 如果你猜错了,我 ...

  3. [Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找)

    [Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找) 题目:符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < ...

  4. golang力扣leetcode 1823.找出游戏的获胜者

    1823.找出游戏的获胜者 1823.找出游戏的获胜者 题解 代码 1823.找出游戏的获胜者 1823.找出游戏的获胜者 题解 题目:n个位围成一个环,每次删除第k个人,求最后一个人是谁 思路:约瑟 ...

  5. golang力扣leetcode 322.零钱兑换

    322.零钱兑换 322.零钱兑换 题解 代码 322.零钱兑换 322.零钱兑换 题解 //state: dp[i]金额为i时所需最少硬币个数 //function: dp[i]=dp[i-n]+1 ...

  6. golang力扣leetcode 675.为高尔夫比赛砍树

    675.为高尔夫比赛砍树 675.为高尔夫比赛砍树 题解 代码 675.为高尔夫比赛砍树 675.为高尔夫比赛砍树 题解 题目:给一个二维矩阵,0不能走,1是陆地,2+是树,1和1往上都能走,从0,0 ...

  7. golang力扣leetcode 297.二叉树的序列化与反序列化

    297.二叉树的序列化与反序列化 297.二叉树的序列化与反序列化 题解 代码 297.二叉树的序列化与反序列化 297.二叉树的序列化与反序列化 题解 题目:给你一个二叉树,序列化从一个string ...

  8. 力扣(LeetCode)刷题,简单+中等题(第34期)

    目录 第1题:整数转罗马数字 第2题:电话号码的字母组合 第3题:二叉树的所有路径 第4题:砖墙 第5题:下一个排列 第6题:括号生成 第7题:删除并获得点数 第8题:全排列 第9题:颜色分类 第10 ...

  9. 力扣(LeetCode)刷题,简单+中等题(第31期)

    目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题 ...

最新文章

  1. php的常量和变量,php的常量和变量
  2. 码牛安卓移动互联网高级开发正式课
  3. spring boot的hello world小实验
  4. 深刻理解:C#中的委托、事件
  5. 洛谷P2822 组合数问题
  6. spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析
  7. VB手控Combobox的打开或收起
  8. nginx开启目录浏览,解决中文乱码问题
  9. vue获取接口数据_c#中HttpWebRequest调用接口获取数据
  10. VMware安装Linux,出现错误-未找到要在其中创建新文件系统的有效设备
  11. 文章2021_01_05_stata15在mac上的dta编码问题和系统crash
  12. 程序员的五种不同寻常的特质
  13. opencv 图像伽马校正
  14. link_path_walk()分析
  15. 怎样设置excel中自动调整行高、列宽?
  16. Google Adsense 网友领款过程
  17. java如何循环输出一个表格,Java编程for循环输出俄文字母表
  18. 极客日报第 73 期:Twitter 正谈判收购印度初创公司 ShareChat:欲打造 TikTok 竞品;华为 Mate X2 正式发布,17999 元起;爱奇艺员工10万“买”了个北京
  19. CCleaner的运行问题详解
  20. 厄米共轭matlab,JuliaStatComputing

热门文章

  1. 怎么修整证件照上传的计算机考试,网上报名上传电子照片时,要求大于30K小于200K,该怎么修改?...
  2. 币须知道 |币安要做联盟计划,首期1000个名额,平台币运作模式 ,ADA创始人:华尔街准备“下一波监管”之后投资“数万亿美元”...
  3. Android手机无法使用google地图的问题的解决方案
  4. matlab学习笔记3(控制系统仿真)
  5. kettle mysql连接超时_kettle 数据库连接中断重置
  6. [Java安全]fastjson学习(一)
  7. python金融分析小知识(35)——最大回撤的计算
  8. python根据显著性水平计算正态分布分位点
  9. powerbi日期转化error
  10. 大数据-hadoop-服务器-网络拓扑