文章目录

  • 1、题目描述
  • 2、解题思路
  • 3、解题代码

1、题目描述

2、解题思路

  当 n = 1 时,答案为 {“0”, “1”, “8”}

  当 n = 2 时,答案为 {“11”, “69”, “88”, “96”}

  当 n >= 3 时,就是在 n-2 的基础上,给 n-2 的所有字符串两边加上 “11”、“69”、“88”、“96”。

  注意,这里存在一个很细节的问题。

  当 n = 3 时,按照上面所说,在 3 - 2 = 1 的基础上加 “11”、“69”、“88”、“96”

  结果为:“101”、“609”、“808”、“906”、“111”、“619”、“818”、“916”、“181”、“689”、“888”、“986”。结果完全正确,一点问题都没有。

  但是,当 n = 4 时,按照上面所说,在 4 - 2 = 2 的基础上加 “11”、“69”、“88”、“96”

  结果为:“1111”、“6119”、“8118”、“9116”、“1691”、“6699”、“8698”、“9696”、“1881”、“6889”、“8888”、“9886”、“11”、“6969”、“8968”、“9966”.

  发现问题没有?

  是的,缺了 “1001”、“6009”、“8008”、“9006” 这四个。

  原因在于:对于 n = 3 的情况,它是在 n = 1 的基础上进行改造,n = 1 的结果是有 “0” 的。

  而 n = 4 是在 n = 2 的基础上进行改造,但是 n = 2 是没有 “00” 的,因为不合法。

  因此,无论 i 是多少,先在计算长度为 i 的中心对称数时,先加上长度为 i 的全 0 字符串再说。

  在最后输出时,把 n 情况下的长度为 n 的全 0 字符串删去。

  也就是说,全 0 字符串只在计算中有意义,在最终的输出中不可以包含。

3、解题代码

import java.util.*;
class Solution {public List<String> findStrobogrammatic(int n) {if (n <= 0) return new ArrayList<>();if (n == 1) return Arrays.asList("0", "1", "8");if (n == 2) return Arrays.asList("11", "69", "88", "96");// arr[n] 表示长度为 n 的所有中心对称数List<String>[] arr = new List[n + 1];arr[1] = Arrays.asList("0", "1", "8");arr[2] = Arrays.asList("00","11", "69", "88", "96");for (int i = 3; i <= n; i++) {// 随着 i 不断地增长,我们只需要在长度为 i-2 的中心对称数两边添加 11,69,88,96 即可。List<String> tmpList = new ArrayList<>();for (String s : arr[i - 2]) {if (i != n) {tmpList.add("0" + s + "0");}tmpList.add("1" + s + "1");tmpList.add("6" + s + "9");tmpList.add("8" + s + "8");tmpList.add("9" + s + "6");}arr[i] = tmpList;}return arr[n];}
}

【LeetCode - 247】中心对称数 II相关推荐

  1. LeetCode 247. 中心对称数 II(DP)

    文章目录 1. 题目 2. 解题 1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 找到所有长度为 n 的中心对称数. 示例 : 输入: n = 2 ...

  2. 247 中心对称数 II

    题目描述: 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 找到所有长度为 n 的中心对称数. 示例 : 输入: n = 2 输出: ["11&qu ...

  3. LeetCode 248. 中心对称数 III(DFS/BFS)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 写一个函数来计算范围在 [low ...

  4. LeetCode 246. 中心对称数(哈希)

    文章目录 1. 题目 2. 解题 1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串 ...

  5. leetcode - 264. 丑数 II

    264. 丑数 II -------------------------------------------- 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示 ...

  6. LeetCode 264. 丑数 II

    264. 丑数 II Ideas 竟然没想到用小根堆,白学了,再把小根堆抄一遍. Code Python class Solution:def nthUglyNumber(self, n: int) ...

  7. Leetcode 264. 丑数 II 解题思路及C++实现

    方法一:暴力解法 解题思路: 直接从整数1开始,不断递增,判断该数字是否为丑数(专门写一个判断是否为丑数的函数),当遇到一个丑数,则计数值加1,直至遇到n个丑数为止. 当n很大时,这种暴力解法会遇到 ...

  8. 86. Leetcode 264. 丑数 II (动态规划-基础题)

    给你一个整数 n ,请你找出并返回第 n 个 丑数 .丑数 就是只包含质因数 2.3 和/或 5 的正整数.示例 1:输入:n = 10 输出:12 解释:[1, 2, 3, 4, 5, 6, 8, ...

  9. 78. Leetcode 264. 丑数 II (堆-技巧二-多路归并)

    给你一个整数 n ,请你找出并返回第 n 个 丑数 .丑数 就是只包含质因数 2.3 和/或 5 的正整数.示例 1:输入:n = 10 输出:12 解释:[1, 2, 3, 4, 5, 6, 8, ...

  10. leetcode 264. 丑数 II(堆)

    给你一个整数 n ,请你找出并返回第 n 个 丑数 . 丑数 就是只包含质因数 2.3 和/或 5 的正整数. 示例 1: 输入:n = 10 输出:12 解释:[1, 2, 3, 4, 5, 6, ...

最新文章

  1. python时间处理模块datetime+dateutil、numpy时间处理模块datetime64以及pandas时间处理模块Timestamp的演化路径及常用处理接口
  2. 为什么不建议企业组织自行配置SD-WAN?—Vecloud微云
  3. 获取网络状态ConnectivityManager
  4. 多快好省的预训练模型:你丢我也丢
  5. Diango博客--21.实现简单的全文搜索
  6. Android中你可能忽略的知识点(1)-分辨率那些事
  7. python比较两张图片是否一样_python实战===用python对比两张图片的不同
  8. 计算机专业论文选题网站方面,5大网站汇总,搞定新颖的计算机专业毕业设计网站汇总...
  9. 安卓系统所有可声明的权限
  10. 获取电脑的唯一识别码_无锡电脑办公,office软件培训,学会为止
  11. html验证码自动刷新,验证码输入错误后自动刷新验证码
  12. SonarQube 持续集成代码质量管理
  13. 数据结构(C#)_排序算法(冒泡排序)
  14. Java奖学金评定系统设计与实现
  15. 学习OpenCV2——Mat之通道的理解
  16. 手把手教你看懂电脑硬件测试软件CPU-Z(二)
  17. 用Python做个打飞机小游戏超详细教程
  18. 动画蒙太奇(开火需要循环播放)
  19. linux单进程最大内存,限制单个Linux进程的内存使用量
  20. 香港中文大学计算机科学硕士面试,香港中文大学金融硕士面试情况

热门文章

  1. PAT-两个数的简单计算器(简单编程题)
  2. [FAQ06649] Latin输入法怎么默认勾选几种语言?
  3. Spring总结一(整体概览)
  4. python excel筛选统计_如何用python对excel表格进行筛选
  5. java applepay_java后端处理Apple Pay流程
  6. Mac电脑怎样添加打印机?
  7. 家庭网络对外网络服务搭建指南
  8. 【微积分】2.1一元函数微分
  9. easyx游戏编程:魔塔(c++语言开发)源码
  10. UEFI规范实现EDKII项目学习笔记绪论[0]