[Práctica de preguntas de algoritmo preferidas] día 9


1. DP35 [Plantilla] Suma de prefijo bidimensional

1. Introducción al tema

DP35 [Plantilla] Suma de prefijo bidimensional
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
La pregunta proviene de Niuke.com y se puede practicar a través del enlace.

2. Ideas para resolver problemas

3.Código

#include <iostream>
using namespace std;
#include<vector>
int main() {
    
    
    int n, m, q;
    while (cin >> n >> m >> q) {
    
    
        vector<vector<long long>> nums(n + 1, vector<long long> (m + 1));
        for(int i = 1;i <= n; ++i)
        {
    
    
            for(int j = 1;j <= m; ++j)
            {
    
    
                cin>>nums[i][j];
            }
        }
        vector<vector<long long>> dp(n + 1, vector<long long> (m + 1));
        for(int i = 1;i <= n; ++i)
        {
    
    
            for(int j = 1;j <= m; ++j)
            {
    
    
                dp[i][j] = nums[i][j] + dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1];
            }
        }
        while(q--)
        {
    
    
            int x1 = 0, y1 = 0, x2 = 0, y2 = 0;
            cin >> x1 >> y1 >> x2 >> y2;
            cout<<dp[x2][y2] - (dp[x1 - 1][y2] + dp[x2][y1 - 1] - dp[x1 - 1][y1 - 1])<<endl;
        }
    }
    return 0;
}

4. Resultados de ejecución

Insertar descripción de la imagen aquí

2. Pregunta de la entrevista 01.01. Determinar si los personajes son únicos.

1. Introducción al tema

Pregunta de la entrevista 01.01. Determinar si los personajes son únicos.
Insertar descripción de la imagen aquí
La pregunta proviene de Leetcode y se puede practicar a través del enlace.

2. Ideas para resolver problemas

3.Código

class Solution {
    
    
public:
    bool isUnique(string astr) {
    
    
        //用一个整数来充当哈希表
        int n = 0;
        for(auto& e : astr)
        {
    
    
            int t = e - 'a';
            if((n & (1 << t)) == 0)
            {
    
    
                n ^= (1 << t);
            }
            else
            {
    
    
                return false;
            }
        }
        return true;
    }
};

4. Resultados de ejecución

Insertar descripción de la imagen aquí

3. 724. Encuentra el subíndice central de la matriz.

1. Introducción al tema

724. Encuentre el subíndice central de una matriz.
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
La pregunta proviene de Leetcode y se puede practicar a través del enlace.

2. Ideas para resolver problemas

3.Código

class Solution {
    
    
public:
    int pivotIndex(vector<int>& nums) {
    
    
        vector<int> lsum(nums.size());//左边的前缀和
        vector<int> rsum(nums.size());//右边的前缀和
        for(int i = 1;i < nums.size(); ++i)
        {
    
    
            lsum[i] = lsum[i - 1] + nums[i - 1];
        }
        for(int i = nums.size() - 2;i >= 0; --i)
        {
    
    
            rsum[i] = rsum[i + 1] + nums[i + 1];
        }
        for(int i = 0;i < nums.size(); ++i)
        {
    
    
            if(lsum[i] == rsum[i]) return i;
        }
        return -1;
    }
};

4. Resultados de ejecución

Insertar descripción de la imagen aquí


Resumir

Hoy es el noveno día de práctica de algoritmos, sigan con el buen trabajo.
Si este artículo os ha inspirado, espero que podáis apoyar más al autor, ¡gracias a todos!

Supongo que te gusta

Origin blog.csdn.net/xjjxjy_2021/article/details/131949692
Recomendado
Clasificación