中心对称数 II
中心对称数 II
1.题目描述
中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。
找到所有长度为 n 的中心对称数。
示例 :
输入: n = 2
输出: ["11","69","88","96"]
2.解题思路
(1)如果n == 0,那么返回“” (空字符串)
(2)如果n == 1, 那么返回“0”, “1”, ”8“
(3)如果n == 2, 那么返回 “11” , “69”, “88”, “96”(这里不包含”00“的情况)
(4)如果n == 3, 那么返回 (这里包含”00“的情况,例如"1001")
“1” + s + “1”
“6” + s + “9”
“8” + s + “8”
“9" + s + “6”
最外围是对称数,那么s呢,就等于n==1的时候的取值,满足n-2.
add1 = {"0","1","8"},add2 = {"00","11","69","88","96"}
i 是奇数,我们在 i-1 偶数的基础上每个数中间位置 add1
i 是偶数,我们在 i-2 偶数的基础上每个数中间位置 add2
class Solution {
public:
vector<string> findStrobogrammatic(int n) {
if(n <= 0) return {""};
if(n==1) return {"0","1","8"};
vector<vector<string>> dp(n+1);
dp[1] = {"0","1","8"};
dp[2] = {"11","69","88","96"};
vector<string> add1 = {"0","1","8"};
vector<string> add2 = {"00","11","69","88","96"};
string num;
for(int i = 3, j,k,h; i <= n; ++i)
{
if(i&1)//奇数,我们在i-1偶数的基础上每个数中间位置add1
{
for(j = 0; j < dp[i-1].size(); j++)
{
num = dp[i-1][j];
h = num.size()/2;
for(k = 0; k < 3; k++)
{
dp[i].push_back(num.substr(0,h)+add1[k]+num.substr(h));
}
}
}
else//i是偶数,我们在i-2偶数基础上每个数中间位置add2
{
for(j = 0; j < dp[i-2].size(); j++)
{
num = dp[i-2][j];
h = num.size()/2;
for(k = 0; k < 5; k++)
{
dp[i].push_back(num.substr(0,h)+add2[k]+num.substr(h));
}
}
}
}
return dp[n];
}
};
中心对称数 II的更多相关文章
- lintcode 中等题:Singleton number II 落单的数 II
题目 落单的数 II 给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字. 样例 给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4 挑战 一次遍历,常数级 ...
- 1145: 零起点学算法52——数组中删数II
1145: 零起点学算法52--数组中删数II Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lldSubmitted: 293 ...
- 力扣:丑数II和数组中前K大的元素
数组中的第K个元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k ...
- LintCode-4.丑数 II
丑数 II 设计一个算法,找出只含素因子2,3,5 的第 n 大的数. 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12... 注意事项 我们可以认为1也是一个丑数 样例 ...
- lintcode-83-落单的数 II
83-落单的数 II 给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字. 样例 给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4 挑战 一次遍历,常数级 ...
- Leetcode 264.丑数II
丑数II 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10 ...
- Leetcode之动态规划(DP)专题-264. 丑数 II(Ugly Number II)
Leetcode之动态规划(DP)专题-264. 丑数 II(Ugly Number II) 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n ...
- Java实现 LeetCode 264 丑数 II(二)
264. 丑数 II 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, ...
- [LeetCode]丑数 II&C++中priority_queue和unordered_set的使用
[LeetCode]丑数 II&C++中priority_queue和unordered_set的使用 考虑到现实因素,LeetCode每日一题不再每天都写题解了(甚至有可能掉题目?--)但对 ...
随机推荐
- 1~n数字中1出现的个数
1~n数字中1出现的个数 LeetCode 给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数. 感觉挺有意思 对于一个数,我们先局部分析一下,比如123456,我们考虑百位这个 ...
- Using Evernote with Wine on Mint
Install Evernote Install Evernote in Wine: wine Evernote_xxx.exe; Backup Evernote Database File Loca ...
- Java-ThreadPool线程池总结
ThreadPool 线程池的优势 线程池做的工作主要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出的线程排队等候,等待其他线程执行完毕 ...
- 由”二进制里不能有3“引发的对parseInt的思考
看到一道面试题,["1", "2", "3"].map(parseInt) 答案是多少? 心生好奇,做做看,发现卡住,没什么头绪.首先对pa ...
- 题解 CF613E Puzzle Lover
解题思路 其实仔细观察我们可以发现路径一定是一个类似于下图的一个左括号之后中间随便反复曲折,然后右边在来一个右括号. 然后对于两个括号形状的东西其实是可以利用 Hash 来判等特殊处理的. 对于中间的 ...
- NOIP 模拟 $23\; \rm 赛$
题解 将所有物品分成四类,分别为两人共同喜欢的,只有一人喜欢的,没人喜欢的. 首先,先从两人共同喜欢的物品里找出 \(k\) 个,这时,就要从剩余的找出 \(\rm m-k\) 个,而且是最小的. 用 ...
- 单例对象 (Singleton)设计模式
单例的目的是为了保证运行时Singleton类只有唯一的一个实例,用于一些较大开销的操作. 饿汉式(没有线程安全问题): ' 由于使用static关键字进行了修饰,只能获取到一个对象,从而达到了单例, ...
- Linux虚拟机系统中进行redis的哨兵模式配置
一.配置步骤 开一台虚拟机1.创建三个redis配置文件:/etc/redis下pidfile "/var/run/redis6380.pid" redis的id号port 638 ...
- 【GIS】点图层符号的方向和大小
方向:根据属性字段设置点图层中每个要素的符号方向和大小, 1 所有要素使用同一种符号---简单渲染 在图层属性---符号系统---单一符号中进行设置,首先设置符号,在后面的[高级]选项按钮中分别设置[ ...
- Storm重启topology,失败
storm新加节点,重启topology后,出现错误 如果检查了CPU和内存不高后,还出现 java.lang.OutOfMemoryError: unable to create new nativ ...