LeetCode una pregunta diaria (c)

1. La suma de dos números

tema:

Dada una matriz de enteros numsy un valor objetivo target, y a determinar un valor objetivo de los dos enteros de la matriz, y regresar a su subíndice de matriz.

Se puede suponer que cada entrada corresponde a una sola respuesta. Sin embargo, no se puede volver a utilizar el mismo elemento de la matriz.

ideas:

Desde el hash de búsqueda complejidad de tiempo O(1), que puede ser utilizado mappara reducir la complejidad del tiempo.

De acuerdo con targetuna serie de mapas digitales de la diferencia, cuando no es y targetcuando un conjunto de números, de inmediato nos podemos volver al número establecido.

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for(int i = 0; i< nums.length; i++) {
            // 发现符合条件的序对,将其返回
            if(map.containsKey(target - nums[i])) {
                return new int[] {map.get(target-nums[i]),i};
            }
            // 目前映射中对i不存在符合的键,将nums[i]-i加入map
            map.put(nums[i], i);
        }
        // 若无解应当抛出异常
        throw new IllegalArgumentException("No two sum solution");
    }
}

// 作者:guanpengchn
//链接:https://leetcode-cn.com/problems/two-sum/solution/jie-suan-fa-1-liang-shu-zhi-he-by-guanpengchn/
//来源:力扣(LeetCode)
//著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Fuente: Botón de estancia (LeetCode)
link: https://leetcode-cn.com/problems/two-sum
propiedad de la deducción de todas las redes. reimpresión comercial póngase en contacto con la reimpresión autorizada oficial, no comercial por favor indique la fuente.

Supongo que te gusta

Origin www.cnblogs.com/aries99c/p/12583763.html
Recomendado
Clasificación