2016 - 2024

感恩一路有你

提高LeetCode刷题效率的方法分享

浏览量:1187 时间:2024-03-27 14:07:05 作者:采采

题目1:两数之和(Two Sum)

LeetCode刷题是程序员面试准备中常见的一部分,能帮助我们熟悉各种算法、数据结构,并为面试做好准备。在LeetCode题库中,题目1是非常经典的一道题目,即Two Sum。题目要求给定一个整数数组和一个目标值,找出数组中和为目标值的两个数,并返回它们的索引。其中,第一个索引必须小于第二个索引。假设每个输入只有一个解。

解法1:排序加二分查找

为了解决这个问题,我们可以采用排序算法结合二分查找来实现。首先,我们对原始数组进行排序,然后使用双指针法,一个指向数组开头,一个指向数组末尾,不断逼近目标值。如果找到两个数的和等于目标值,则记录它们的索引并返回结果。

```java

public class Solution {

public int[] twoSum(int[] numbers, int target) {

int[] arr (numbers, numbers.length);

int[] result new int[2];

(numbers);

int i0;

int j numbers.length-1;

while(i < j){

if((numbers[i] numbers[j]) > target){

j--;

} else if((numbers[i] numbers[j]) < target){

i ;

} else {

int temp1 numbers[i];

int temp2 numbers[j];

int index1 0, index2 0;

boolean flag1 true;

boolean flag2 true;

for(int k0; k

if(flag1){

if(arr[k] temp1){

index1 k;

flag1 false;

continue;

}

}

if(flag2){

if(arr[k] temp2){

index2 k;

flag2 false;

continue;

}

}

}

if(index1 < index2){

result[0] index1;

result[1] index2;

} else {

result[0] index2;

result[1] index1;

}

break;

}

}

return result;

}

}

```

解法2:利用HashMap映射表

另一种高效的解法是利用HashMap来建立数值与索引的映射关系。我们遍历数组,在建立映射关系的同时,寻找当前数字对应的另一个数字是否已经存在于HashMap中。如果找到匹配的数字,即可得到结果。

```java

public class Solution {

public int[] twoSum(int[] numbers, int target) {

HashMap map new HashMap<>();

for(int i0; i

map.put(numbers[i], i);

}

int[] result new int[2];

for(int i0; i

int waitCal target - numbers[i];

if((waitCal) ! null (waitCal) > i){

result[0] i;

result[1] (waitCal);

break;

}

}

return result;

}

}

```

通过以上两种解法,我们可以在不同场景下选择合适的方法来解决问题,提高LeetCode刷题的效率,同时增强对各种算法思想的理解。持续刷题,保持学习,才能在面试中游刃有余地解决各类算法问题。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。