【回文串10】LeetCode 479. Largest Palindrome Product
LeetCode 479. Largest Palindrome Product
本博客转载自:http://www.cnblogs.com/grandyang/p/7644725.html
Solution1:我的答案
暴力解法,当n = 4时就超时了。只是记录一下……
class Solution {
public:int largestPalindrome(int n) {long long res = 0;set<long long> res_set;int min = pow(10, n - 1), max = pow(10, n) - 1;for (int i = min; i <= max; i++) {for (int j = min; j <= max; j++) {res = (long long)i * j;if (isPalin(res))res_set.insert(res);}}return *(--res_set.end()) % 1337;}bool isPalin(long long n) {string n_str = to_string(n);string n_str_copy = n_str;reverse(n_str_copy.begin(), n_str_copy.end());if (n_str_copy == n_str)return true;elsereturn false;}
};
Solution2:
参考网址:http://www.cnblogs.com/grandyang/p/7644725.html
算法关键:当n>1时,2个n位数乘积的最大回文数一定是2n位的当n>1时,2个n位数乘积的最大回文数一定是2n位的当n>1时,2个n位数乘积的最大回文数一定是2n位的
思路:先找出这个回文数,然后判断其是否能由两个n位数的乘积得到!
首先我们还是要确定出n位数的范围,最大值upper,可以取到,最小值lower,不能取到。然后我们遍历这区间的所有数字,对于每个遍历到的数字,我们用当前数字当作回文数的前半段,将其翻转一下拼接到后面,此时组成一个回文数,这里用到了一个规律,当n>1时,两个n位数乘积的最大回文数一定是2n位的。下面我们就要来验证这个回文数能否由两个n位数相乘的来,我们还是遍历区间中的数,从upper开始遍历,但此时结束位置不是lower,而是当前数的平方大于回文数,因为我们遍历的是相乘得到回文数的两个数中的较大数,一旦超过这个范围,就变成较小数了,就重复计算了。比如对于回文数9009,其是由99和91组成的,其较大数的范围是[99,95],所以当遍历到94时,另一个数至少需要是95,而这种情况在之前已经验证过了。当回文数能整除较大数时,说明是成立的,直接对1337取余返回即可,参见代码如下:
class Solution {
public:int largestPalindrome(int n) {int upper = pow(10, n) - 1, lower = upper / 10;for (int i = upper; i > lower; --i) {string t = to_string(i);long p = stol(t + string(t.rbegin(), t.rend()));for (long j = upper; j * j >= p; --j) {if (p % j == 0) return p % 1337;}}//当n = 1时,两个1位数乘积范围在[1, 81]之间,//显然{77,66,55,44,33,22,11}这些数不能由两个1位数//相乘得到,退出上面的循环后,直接返回9return 9;}
};
【回文串10】LeetCode 479. Largest Palindrome Product相关推荐
- 479 Largest Palindrome Product 最大回文数乘积
你需要找到由两个 n 位数的乘积组成的最大回文数. 由于结果会很大,你只需返回最大回文数 mod 1337得到的结果. 示例: 输入: 2 输出: 987 解释: 99 x 91 = 9009, 90 ...
- 【细节实现 回文串12】LeetCode 564. Find the Closest Palindrome
LeetCode 564. Find the Closest Palindrome 本博客转载自:http://www.cnblogs.com/grandyang/p/6915355.html Sol ...
- LeetCode Palindrome Partitioning(dfs +回文串 )
问题:给出一个字符串,输出回文串,使得拼接后为原来的字符串 思路:先通过动态规划得到所有的回文串,然后使用深度优先搜索得到所有的解 具体代码参考: https://github.com/wuli249 ...
- C#LeetCode刷题之#125-验证回文串(Valid Palindrome)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3899 访问. 给定一个字符串,验证它是否是回文串,只考虑字母和数 ...
- 【To Understand!回文串8 哈希表】LeetCode 336. Palindrome Pairs
LeetCode 336. Palindrome Pairs Solution1:我的答案 最笨的方法,果然因为时间复杂度太高而无法AC-- 难怪是hard 只是记录一下-- class Soluti ...
- 【回文串7】LeetCode 234. Palindrome Linked List
LeetCode 234. Palindrome Linked List Solution1:我的答案 一遍过,哈哈哈! /*** Definition for singly-linked list. ...
- 【To Understand! 回文串6 KMP算法】LeetCode 214. Shortest Palindrome
LeetCode 214. Shortest Palindrome Solution1:最笨的方法.时间复杂度O(n2)O(n2)O(n^2) 竟然能AC,xixixi class Solution ...
- 【回文串5 重点+动态规划】LeetCode 132. Palindrome Partitioning II
LeetCode 132. Palindrome Partitioning II Solution1:我的答案1 直接模仿131那道题的DFS解法,找其中size最小的.果不其然,因为超时只能部分AC ...
- 【回文串4 DFS】LeetCode 131. Palindrome Partitioning
LeetCode 131. Palindrome Partitioning DFS的经典套路题目!!! 八皇后问题写法类似!!! Solution1: 转载网址:http://www.cnblogs. ...
最新文章
- SQL Server 2008 Analysis Services 多维数据库一步一步从入门到精通
- window/linux composer安装/卸载
- Linux下Apache虚拟主机配置
- oracle 操作表
- 整数的二进制表达中有多少个1
- 1047 Student List for Course (25 分)【难度: 简单 / 知识点: 模拟】
- Exception in thread “main“ java.lang.NoSuchMethodError: scala.collection.mut
- YBTOJ:采矿战略(线段树维护dp、树链剖分)
- C语言指针这些使用技巧值得收藏!
- 12-贝叶斯算法(知识准备)
- 18.模板引擎(2)
- Red Hat Enterprise Linux (RHEL) 6.3 6.4 6.5 DVD ISO 下载地址
- linux 查看当前表空间大小,查看表空间和表的使用率
- 贵阳学院教务管理系统服务器,贵阳学院教务处,教务网络管理系统
- IDEA设置字体随鼠标滚动放大缩小
- 不要拿你的认知来评价别人
- torch.optim.Optimizer
- Kafka Broker 总体工作流程
- Dungeon Game
- Rabbitmq使用优先级队列实现消息插队
热门文章
- VScode+远程服务器docker+C/C++ 代码挑战配置
- 避免野指针的方法及结构体小细节
- 第三次握手为什么没有序列号_TCP三次握手机制-深入浅出(实例演示)
- xshell停止运行脚本_Xshell无法启动:要继续使用此程序,您必须应用最新的更新或使用新版本...
- 计算机ck,[计算机]ck编程速成.doc
- c51单片机时钟程序汇编语言,51单片机汇编语言--延时程序的延时时间
- php 完全前后端分离使用jwt,larke-admin 是一套使用 Laravel 8 、JWT 和 RBAC鉴权的前后端分离的通用后台管理系统...
- primefaces_Primefaces单选按钮,复选框示例
- jsf服务_JSF dataTable示例
- linux基本命令示例_Linux ps命令– 20个真实示例