Works Application 萬革始 2019校招面試題總結
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會怎麼樣