1. La suma de dos números
tema:
Dada una matriz de enteros nums
y 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 map
para reducir la complejidad del tiempo.
De acuerdo con target
una serie de mapas digitales de la diferencia, cuando no es y target
cuando 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.