Dado un número entero de matrices y un objetivo de valor objetivo, encuentre los dos enteros cuya suma es el valor objetivo en la matriz y devuelva su índice de matriz.
Puede suponer que cada entrada solo corresponderá a una respuesta. Sin embargo, no puede reutilizar los mismos elementos en esta matriz.
Fuente: LeetCode Enlace: https://leetcode-cn.com/problems/two-sum El
copyright pertenece a la red de deducción. Comuníquese con la autorización oficial para la reimpresión comercial e indique la fuente de la reimpresión no comercial.
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
int comp;
for(int i = 0; i < nums.length; i++){
comp = target - nums[i];
if(map.containsKey(comp))
return new int[] {i, map.get(comp)};
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
}
Principalmente el uso de tablas hash. La tarea se puede completar con un recorrido.
Tenga en cuenta algunos:
- Map es una interfaz y sus clases de implementación son HashMap y HashTable . El primero no es seguro para subprocesos , el último es lo contrario.
- new int [] {1,2,3} es el constructor de la matriz .