当前位置: 首页 > news >正文

Leetcode 3260. Find the Largest Palindrome Divisible by K

  • Leetcode 3260. Find the Largest Palindrome Divisible by K
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3260. Find the Largest Palindrome Divisible by K

1. 解题思路

这一题的话首先我们可以快速给出几个简单情况的答案:

  1. 如果 k = 1 k=1 k=1,那么显然返回 n n n 9 9 9即可
  2. 如果 k = 2 k=2 k=2,那么首尾用 8 8 8,其他给出 9 9 9即可;
  3. 如果 k = 4 k=4 k=4,那么头尾的两位均用 88 88 88,其他给出 9 9 9即可;
  4. 如果 k = 8 k=8 k=8,那么头尾的三位均用 888 888 888,其他给出 9 9 9即可;
  5. 如果 k = 5 k=5 k=5,那么首尾用 5 5 5,其他给出 9 9 9即可;

而对于其他的情况,暂时没啥好的思路,因此给出了一个暴力的解法,就是先通过一个迭代由大到小给出所有的回文序列,然后手动写一个除法函数判断一下是否可以整除即可。

2. 代码实现

给出python代码实现如下:

class Solution:def largestPalindrome(self, n: int, k: int) -> str:def dfs(n, start_with_even):if n == 0:yield ""elif n == 1:if start_with_even:for i in range(8, -1, -1):yield str(i)else:for i in range(9, -1, -1):yield str(i)else:m = n // 2for num1 in dfs(m, start_with_even):for num2 in dfs(n-m, False):yield num1 + num2def get_palindromic(n, start_with_even):r = n % 2m = n // 2num_iter = dfs(m, start_with_even)for num in num_iter:if r == 0:yield (num + num[::-1]).strip("0")else:for i in range(9, -1, -1):yield (num + str(i) + num[::-1]).strip("0")return ""def is_divisible(num, k):if k == 1:return Truer = 0for d in num:r = (r*10 + int(d)) % kreturn r == 0if k == 1:return "9" * nelif k == 2:if n <= 2:return "8" * nelse:return "8" + "9" * (n-2) + "8"elif k == 4:if n <= 4:return "8" * nelse:return "88" + "9" * (n-4) + "88"elif k == 8:if n <= 6:return "8" * nelse:return "888" + "9" * (n-6) + "888"elif k == 5:if n <= 2:return "5" * nelse:return "5" + "9" * (n-2) + "5"palindromic_iter = get_palindromic(n, k % 2 == 0)for num in palindromic_iter:if is_divisible(num, k):return numreturn "-1"

提交代码评测得到:耗时637ms,占用内存53.2MB。


http://www.mrgr.cn/news/311.html

相关文章:

  • 虚拟机哪个软件最好用? 苹果电脑用虚拟机运行Windows程序 Mac电脑怎么玩Windows游戏
  • 精通推荐算法23:行为序列建模之DIN -- 注意力池化(上)
  • 【投融界-注册安全分析报告】
  • Linux 主机一键安全整改策略
  • SpringBoot自定义类加载器
  • shell如何实现管道符号‘|‘
  • K8s节点状态 NotReady排查
  • ios微信分享,微信登录,添加ios平台通用连接Universal Links
  • tomcat Listener 内存马浅谈
  • 基于Mybatis 数据过滤组件(一)
  • 【微信小程序】全局配置
  • 大白话解释TCP的三次握手和四次挥手
  • 深度学习常用损失函数详解
  • dockerfile搭建部署LNMP
  • Angular路由使用
  • redis命令执行过程
  • 手机操作技巧:如何进入锁定的Android手机
  • nvm与node安装
  • RabbitMQ 双机系统偶尔丢失消息问题排查
  • 简单记录:两台服务器如何超快速互传文件/文件夹