精品推荐:
《征服数据结构》专栏:50多种数据结构彻底征服
《经典图论算法》专栏:50多种经典图论算法全部掌握
原来HR招人面试真的是有kpi考核的,真的搞不懂这些脑残公司怎么想的,既然不想招人,为什么还要让别人白跑一趟,到底图的是啥?所以经常有人说面试聊的挺好的,问的也都回答出来了,但就是不发offer,一度怀疑自己的能力,给求职者一次次的打击,稍微有点信心不足的可能就懈怠了。
--------------下面是今天的算法题--------------
来看下今天的算法题,这题是LeetCode的第168题:Excel表列名称。
问题描述
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
输入:columnNumber = 28
输出:"AB"
输入:columnNumber = 701
输出:"ZY"
1 <= columnNumber <= 2^31 - 1
问题分析
326 % 10 = 6 取个位数字
326 / 10 = 32 除以 10 。
32 % 10 = 2 取个位数字
32 / 10 = 3 除以 10 。
3 % 10 = 3 取个位数字
3 / 10 = 0 除以 10 。
public String convertToTitle(int columnNumber) {
StringBuilder stringBuilder = new StringBuilder();
while (columnNumber != 0) {
// 每次对26求余然后转化为大写字母。
stringBuilder.append((char) ('A' + (--columnNumber % 26)));
columnNumber /= 26;
}
// 上面是从低位开始计算,所以最后还需要反转。
return stringBuilder.reverse().toString();
}
public:
string convertToTitle(int columnNumber) {
string s;
while (columnNumber != 0) {
// 每次对26求余然后转化为大写字母。
s += 'A' + (--columnNumber % 26);
columnNumber /= 26;
}
// 上面是从低位开始计算,所以最后还需要反转。
reverse(s.begin(),s.end());
return s;
}
数组,稀疏表(Sparse Table),单向链表,双向链表,块状链表,跳表,队列和循环队列,双端队列,单调队列,栈,单调栈,双端栈,散列表,堆,字典树(Trie树),ArrayMap,SparseArray,二叉树,二叉搜索树(BST),笛卡尔树,AVL树,树堆(Treap),FHQ-Treap,哈夫曼树,滚动数组,差分数组,LRU缓存,LFU缓存
……
图的介绍,图的表示方式,邻接矩阵转换,广度优先搜索(BFS),深度优先搜索(DFS),A*搜索算法,迭代深化深度优先搜索(IDDFS),IDA*算法,双向广度优先搜索,迪杰斯特拉算法(Dijkstra),贝尔曼-福特算法(Bellman-Ford),SPFA算法,弗洛伊德算法(Floyd),卡恩(Kahn)算法,基于DFS的拓扑排序,约翰逊算法(Johnson)
……