コード巧みなインタビューの質問

168&171 leetcodeタイトル:

、B、C、...、Z、AA、AB、...、AZ、BA、...、ZZZ、AAAA .... i番目の文字列を検索

string solve(int num) {
    string ans;
    while(num--) { // 将0~25映射到‘A’~‘Z’
        int val = num%26;
        ans += 'A'+val;
        num /= 26;
    }
    reverse(ans.begin(), ans.end());
    return ans;
}

タイトル2

既知の配列のサイズであるN、アレイBシーク

B [I] = A [0] Aが[1] ... [I. 1- [Iは+ 1] ... [1-N]
O(N)時間計算量はO(1)空間の複雑さを程度。
これは、除去サイクルを使用私は、追加の変数他のメモリを必要とします。

void solve(int *a, int *b, int N) {
    int i;

    b[0] = 1;
    for(i = 1 ; i < N; i++)
        b[i] = b[i-1]*a[i-1];
    
    b[0] = a[--i];
    for(--i; i > 0; i--) {
        b[i] *= b[0];
        b[0] *= a[i];
    }
}

おすすめ

転載: www.cnblogs.com/dirge/p/11568637.html