2018
* DP,DFS题 leetcode
* 给出链表,给出k,将小于k的放置在前面,其余保持不变
124521,k=3 -> 122145
* 旋转链表:将列表向右旋转k个位置,其中k为非负数。
如,123456,k = 2 -> 561234
* 判断两个二叉树是否相等
* 判断一个二叉树是否为镜像二叉树
* 左右反转二叉树
* Z形层次遍历二叉树
* 字符串相加
* zigzag题,leetcode
* 求最长回文子序列,直接反过来求最长公共子序列就好了
* 区间合并
* LeetCode 15. 3Sum 三数之和
2017\2016
* 算两个没有公共字母的字符串的最大长度积
* 第一题是要查找数组中的最小元素
* Find All Anagrams in a String.(不清晰)
* Decode String Given an encoded string,return it's decoded string
* 字符串匹配
* 广度优先搜索
* 在一个字符串中找另一个的同形异构体 leetcode 438
* leetcode 9
* leetcode153,400
* nth digit题, leetcode
* 回文?动态规划 dp?
* 翻转二叉树、镜像二叉树,求深度
* 二叉树的序列化和反序列化,leetcode
* 第一题是字符串转化为二叉树与二叉树转化为字符串的题(解决方案是BFS)。
例如:字符串数组 {1, 2, 3, null, null, null, null}
转化为对应的二叉树为
1
/ \
2 3
null表示节点为空,按照二叉数从树根(第一层),第二层进行遍历。
* 一个数字数组,将这些数字组合成一个最大的数
(定义一个排序函数,然后将排序的数字连接起来)。
例如数组 {3, 30, 34, 9} 组合后的最大数是 934330.
* 输出从n个数中选取k个数的所有情况
* 链表 字符串
* 给定一个数,判断这个数是否为2的次方,禁止使用循环
* 给定一个字符串,按照zigzag转换然后输出新的字符串
2015
* 2+5*8处理成其后缀表达式2 5 8 * +
* 后缀表达式计算结果的题
* 最长公共子串,最长公共子序列,括号匹配stack,多种括号的匹配
* 最长递增子序列;最长连续相同子序列
* 两个正整数M和N,M <= N,令0 < a < M,M <= b <= N,分别输出以a为分子b为分母的可约和不可约分数
#include <iostream>
#include <vector>
using namespace std;
int gcd(int m, int n)
{
if (n == 0)
{
return m;
}
else
{
return gcd(n, m % n);
}
}
int main()
{
int m, n;
vector<string> canReduce, cannotReduce;
while (cin >> m >> n)
{
if (m >= n)
{
break;
}
for (int i = 1; i < m; i++)
{
for (int j = m; j <= n; j++)
{
char str[10];
sprintf(str, "%d/%d", i, j);
if (gcd(i, j) == 1)
{
cannotReduce.push_back(str);
}
else
{
canReduce.push_back(str);
}
}
}
for (int i = 0; i < canReduce.size(); i++)
{
cout << canReduce.at(i).c_str() << " ";
}
cout << endl;
for (int i = 0; i < cannotReduce.size(); i++)
{
cout << cannotReduce.at(i).c_str() << " ";
}
cout << endl;
}
return 0;
}
2014
* 字符串全排列, 匹配
2013
* 全排序:给一个字符串“acb”,输出abc acb bac bca cab cba /aab会怎么样