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相关推荐

  1. 479 Largest Palindrome Product 最大回文数乘积

    你需要找到由两个 n 位数的乘积组成的最大回文数. 由于结果会很大,你只需返回最大回文数 mod 1337得到的结果. 示例: 输入: 2 输出: 987 解释: 99 x 91 = 9009, 90 ...

  2. 【细节实现 回文串12】LeetCode 564. Find the Closest Palindrome

    LeetCode 564. Find the Closest Palindrome 本博客转载自:http://www.cnblogs.com/grandyang/p/6915355.html Sol ...

  3. LeetCode Palindrome Partitioning(dfs +回文串 )

    问题:给出一个字符串,输出回文串,使得拼接后为原来的字符串 思路:先通过动态规划得到所有的回文串,然后使用深度优先搜索得到所有的解 具体代码参考: https://github.com/wuli249 ...

  4. C#LeetCode刷题之#125-验证回文串(Valid Palindrome)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3899 访问. 给定一个字符串,验证它是否是回文串,只考虑字母和数 ...

  5. 【To Understand!回文串8 哈希表】LeetCode 336. Palindrome Pairs

    LeetCode 336. Palindrome Pairs Solution1:我的答案 最笨的方法,果然因为时间复杂度太高而无法AC-- 难怪是hard 只是记录一下-- class Soluti ...

  6. 【回文串7】LeetCode 234. Palindrome Linked List

    LeetCode 234. Palindrome Linked List Solution1:我的答案 一遍过,哈哈哈! /*** Definition for singly-linked list. ...

  7. 【To Understand! 回文串6 KMP算法】LeetCode 214. Shortest Palindrome

    LeetCode 214. Shortest Palindrome Solution1:最笨的方法.时间复杂度O(n2)O(n2)O(n^2) 竟然能AC,xixixi class Solution ...

  8. 【回文串5 重点+动态规划】LeetCode 132. Palindrome Partitioning II

    LeetCode 132. Palindrome Partitioning II Solution1:我的答案1 直接模仿131那道题的DFS解法,找其中size最小的.果不其然,因为超时只能部分AC ...

  9. 【回文串4 DFS】LeetCode 131. Palindrome Partitioning

    LeetCode 131. Palindrome Partitioning DFS的经典套路题目!!! 八皇后问题写法类似!!! Solution1: 转载网址:http://www.cnblogs. ...

最新文章

  1. SQL Server 2008 Analysis Services 多维数据库一步一步从入门到精通
  2. window/linux composer安装/卸载
  3. Linux下Apache虚拟主机配置
  4. oracle 操作表
  5. 整数的二进制表达中有多少个1
  6. 1047 Student List for Course (25 分)【难度: 简单 / 知识点: 模拟】
  7. Exception in thread “main“ java.lang.NoSuchMethodError: scala.collection.mut
  8. YBTOJ:采矿战略(线段树维护dp、树链剖分)
  9. C语言指针这些使用技巧值得收藏!
  10. 12-贝叶斯算法(知识准备)
  11. 18.模板引擎(2)
  12. Red Hat Enterprise Linux (RHEL) 6.3 6.4 6.5 DVD ISO 下载地址
  13. linux 查看当前表空间大小,查看表空间和表的使用率
  14. 贵阳学院教务管理系统服务器,贵阳学院教务处,教务网络管理系统
  15. IDEA设置字体随鼠标滚动放大缩小
  16. 不要拿你的认知来评价别人
  17. torch.optim.Optimizer
  18. Kafka Broker 总体工作流程
  19. Dungeon Game
  20. Rabbitmq使用优先级队列实现消息插队

热门文章

  1. VScode+远程服务器docker+C/C++ 代码挑战配置
  2. 避免野指针的方法及结构体小细节
  3. 第三次握手为什么没有序列号_TCP三次握手机制-深入浅出(实例演示)
  4. xshell停止运行脚本_Xshell无法启动:要继续使用此程序,您必须应用最新的更新或使用新版本...
  5. 计算机ck,[计算机]ck编程速成.doc
  6. c51单片机时钟程序汇编语言,51单片机汇编语言--延时程序的延时时间
  7. php 完全前后端分离使用jwt,larke-admin 是一套使用 Laravel 8 、JWT 和 RBAC鉴权的前后端分离的通用后台管理系统...
  8. primefaces_Primefaces单选按钮,复选框示例
  9. jsf服务_JSF dataTable示例
  10. linux基本命令示例_Linux ps命令– 20个真实示例