leetcode -- 171、172

171. Excel表列序號

題目描述

給定一個Excel表格中的列名稱,返回其相應的列序號。

例如,

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28 
...

示例 1:

輸入: “A”
輸出: 1

示例 2:

輸入: “AB”
輸出: 28

示例 3:

輸入: “ZY”
輸出: 701

解題方法

二十六進制轉十進制

int titleToNumber(char * s)
{
    long sub, count = 0, res = 0;
    char c[27] = {'\0', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
    for (int i = 0; i < strlen(s); i ++)
    {
        res = res * 26 + s[i] - 'A' + 1;
    }
    return res;
}

在這裏插入圖片描述

172.階乘後的零

題目描述

給定一個整數 n,返回 n! 結果尾數中零的數量。

示例 1:

輸入: 3
輸出: 0
解釋: 3! = 6, 尾數中沒有零。

示例 2:

輸入: 5
輸出: 1
解釋: 5! = 120, 尾數中有 1 個零.
說明: 你算法的時間複雜度應爲 O(log n) 。

解題方法

先算階乘,再算零gg了,因爲階乘很容易溢出。這題目是個數學題。
分析點這裏。

int trailingZeroes(int n)
{
    int count = 0;
    while (n > 0) 
    {
        count += n / 5;
        n = n / 5;
    }
    return count;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章