你不骂她,大伙就要骂你了。。

科技   2024-10-27 10:10   上海  

精品推荐

《征服数据结构》专栏:50多种数据结构彻底征服

《经典图论算法》专栏:50多种经典图论算法全部掌握


原来HR招人面试真的是有kpi考核的,真的搞不懂这些脑残公司怎么想的,既然不想招人,为什么还要让别人白跑一趟,到底图的是啥?所以经常有人说面试聊的挺好的,问的也都回答出来了,但就是不发offer,一度怀疑自己的能力,给求职者一次次的打击,稍微有点信心不足的可能就懈怠了。



网友评论:





--------------下面是今天的算法题--------------


来看下今天的算法题,这题是LeetCode的第168题:Excel表列名称。


问题描述



来源:LeetCode第168题
难度:简单

给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。

例如:

A -> 1

B -> 2

C -> 3

...

Z -> 26

AA -> 27

AB -> 28 

...


示例1:

输入:columnNumber = 28

输出:"AB"

示例2:

输入:columnNumber = 701

输出:"ZY"


  • 1 <= columnNumber <= 2^31 - 1


问题分析



这题是让把数字转化为一个由大写字母表示的字符串,大写字母总共有 26 个,实际上这题是让把 10 进制转化为 26 进制。因为数字是 10 进制的,如果还转化为 10 进制,我们只需要对 10 求余,每次取数字的个位数即可。

比如数字 326 ,先取 326 的个位数字 6 。
326 % 10 = 6 取个位数字326 / 10 = 32 除以 10 。
在取 32 的个位数字 2 。
32 % 10 = 2 取个位数字32 / 10 = 3 除以 10 。
最后在取 3 的个位数字 3 。
3 % 10 = 3 取个位数字3 / 10 = 0 除以 10 。

但这题转化的是 26 进制,我们只需要把 10 换成 26 即可,每次需要不断的对 26 求余,然后在除以 26 。因为大写字母 'A' 对应的是数字 1 ,所以下面代码中每次对 26 求余之前需要减 1 。

JAVA:
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();
}

C++
public:
    string convertToTitle(int columnNumber) {
        string s;
        while (columnNumber != 0) {
            // 每次对26求余然后转化为大写字母。
            s += 'A' + (--columnNumber % 26);
            columnNumber /= 26;
        }
        // 上面是从低位开始计算,所以最后还需要反转。
        reverse(s.begin(),s.end());
        return s;
    }


笔者简介
博哥,真名:王一博,毕业十多年,《算法秘籍》作者,专注于数据结构和算法的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解800多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以下载我整理的1000多页的PDF算法文档


《征服数据结构》专栏

数组稀疏表(Sparse Table)单向链表双向链表块状链表跳表队列和循环队列双端队列单调队列单调栈双端栈散列表字典树(Trie树)ArrayMapSparseArray二叉树二叉搜索树(BST)笛卡尔树AVL树树堆(Treap)FHQ-Treap哈夫曼树滚动数组差分数组LRU缓存LFU缓存

……


《经典图论算法》专栏

图的介绍图的表示方式邻接矩阵转换广度优先搜索(BFS)深度优先搜索(DFS)A*搜索算法迭代深化深度优先搜索(IDDFS)IDA*算法双向广度优先搜索迪杰斯特拉算法(Dijkstra)贝尔曼-福特算法(Bellman-Ford)SPFA算法弗洛伊德算法(Floyd)卡恩(Kahn)算法基于DFS的拓扑排序约翰逊算法(Johnson)

……

数据结构和算法
王一博,《算法秘籍》作者,1000多页的pdf算法题我也已经整理完成,在公众号“数据结构和算法”中回复关键字“pdf”即可下载。
 最新文章