Java - LeetCode два сумма Hashmap SolutionJAVA

Программисты JAVA общаются здесь
Гость
Java - LeetCode два сумма Hashmap Solution

Сообщение Гость »

Я новичок в Java, и я только начал делать LeetCode - две суммы.
Я обнаружил, что, кроме решения Brute Force, общее решение использует HashMap. Но я все еще не могу получить это. Например, это работает в моей логике: < /p>

Код: Выделить всё

public int[] twoSum(int[] nums, int target) {
HashMap m = new HashMap();
int[] res = new int[2];
for (int i = 0; i < nums.length; ++i) {
m.put(nums[i], i);
}
for (int i = 0; i < nums.length; ++i) {
int t = target - nums[i];
if (m.containsKey(t) && m.get(t) != i) {
res[0] = i;
res[1] = m.get(t);
break;
}
}
return res;
}
< /code>

Первый для цифр. Поместите номера Hashmap и используйте второе для цикла, чтобы проверить, можно ли найти номер, равный целевому номеру - Nums [i] < /code>. Тем не менее, я видел много принятых решений, объединивших два для петли, таких как этот пример: < /p>

public int[] twoSum(int[] nums, int target) {
HashMap m = new HashMap();
int[] res = new int[2];
for (int i = 0; i < nums.length; ++i) {
if (m.containsKey(target - nums[i])) {
res[0] = i;
res[1] = m.get(target - nums[i]);
break;
}
m.put(nums[i], i);
}
return res;
}
< /code>

В моей логике второе решение запускает цикл для цикла, как это: < /p>

//[2,7,11,15]
when i=0, m.put(nums[0],2)
when i=1, m.put(nums[1],7)
when i=2, m.put(nums[2],11)
when i=3, m.put(nums[3],15)
и потому, что i

Подробнее здесь: https://stackoverflow.com/questions/533 ... p-solution

Вернуться в «JAVA»