[牛 客 网 -Leetcode] #Hash é mais difícil de duas somas

Dois somas

Descrição do título

Dada uma matriz de inteiros, encontre dois números na matriz que somam o valor de destino.
A função twoSum que você fornece precisa retornar os subscritos (índice1, índice2) desses dois números e índice1 deve ser menor que índice2. Observação: o subscrito começa em 1.
Suponha que haja apenas uma solução no array fornecido.
Por exemplo: o
array fornecido é {2, 7, 11, 15}, o valor alvo é 9
output ndex1 = 1, index2 = 2

Dada uma matriz de inteiros, encontre dois números de forma que eles se somam a um número de destino específico.
A função twoSum deve retornar índices dos dois números de forma que eles se somam ao destino, onde índice1 deve ser menor que índice2. Observe que as respostas retornadas (índice1 e índice2) não são baseadas em zero.

Você pode supor que cada entrada teria exatamente uma solução.

Entrada: números = {2, 7, 11, 15}, meta = 9
Saída: índice1 = 1, índice2 = 2

Exemplo

digitar

[3,2,4], 6

Resultado

[2,3]

Ideias para resolução de problemas

  • Tabela de hash, use unordered_map para registrar o mapeamento de "valor do elemento -> subscrito da matriz"
#include <unordered_map>
class Solution {
    
    
public:
    vector<int> twoSum(vector<int>& numbers, int target) {
    
    
        vector<int> res;
        unordered_map<int, int> mp;
        int size = numbers.size();
        //初始化hash表
        for(int i = 0; i < size; i ++) {
    
    
            mp[numbers[i]] = i;
        }
        for(int i = 0; i < size; i ++) {
    
    
            int temp = target - numbers[i];
            //如果在mp中找到互补的元素,则添加进结果
            //同时要确保互补的数不是它本身
            if(mp.find(temp) != mp.end() && mp[temp] > i) {
    
    
                res.push_back(i + 1);  //由于下标是从1开始的,所以要加一
                res.push_back(mp[temp] + 1);
                break;
            } else {
    
    
                //如果在mp中没找到互补的元素,则直接跳过
                continue;
            }
        }
        return res;
    }
};

Acho que você gosta

Origin blog.csdn.net/cys975900334/article/details/107028640
Recomendado
Clasificación