leetcode题库java
LeetCode是一个非常受程序员欢迎的在线编程平台,提供了大量的算法题目,帮助程序员提升编程能力和解决问题的能力。而Java作为一门广泛应用于软件开发的编程语言,也是LeetCode题库中最常用的编程语言之一。本文将介绍一些LeetCode题库中常见的Java题目。
1.两数之和(TwoSum)
题目描述:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
解题思路:使用哈希表存储数组中的元素和对应的索引,遍历数组,对于每个元素,判断目标值减去当前元素是否在哈希表中,如果存在,则返回两个元素的索引。
Java代码示例:
```java
publicint[]twoSum(int[]nums,inttarget){
MapInteger,Integermap=newHashMap();
for(inti=0;inums.length;i++){
intcomplement=target-nums[i];
if(map.containsKey(complement)){
returnnewint[]{map.get(complement),i};
}
map.put(nums[i],i);
}
thrownewIllegalArgumentException(Notwosumsolution);
}
```
2.盛最多水的容器(ContainerWithMostWater)
题目描述:给定一个非负整数数组,每个元素表示一个竖直线的高度,找出两条线与x轴组成的容器可以容纳的最大水量。
解题思路:使用双指针法,初始化左指针和右指针分别指向数组的两端,计算当前容器的水量,然后将较短的线段向内移动,直到左指针和右指针相遇。
Java代码示例:
```java
publicintmaxArea(int[]height){
intmaxArea=0;
intleft=0;
intright=height.length-1;
while(leftright){
intarea=Math.min(height[left],height[right])*(right-left);
maxArea=Math.max(maxArea,area);
if(height[left]height[right]){
left++;
}else{
right--;
}
}
returnmaxArea;
}
```
3.无重复字符的最长子串(LongestSubstringWithoutRepeatingCharacters)
题目描述:给定一个字符串,找出其中不含有重复字符的最长子串的长度。
解题思路:使用滑动窗口法,定义一个窗口,窗口的左边界和右边界分别表示子串的起始位置和结束位置,遍历字符串,如果当前字符不在窗口中,则将其加入窗口,更新最长子串的长度,否则将窗口的左边界右移,直到当前字符不在窗口中。
Java代码示例:
```java
publicintlengthOfLongestSubstring(Strings){
intmaxLength=0;
intleft=0;
intright=0;
SetCharacterset=newHashSet();
while(rights.length()){
if(!set.contains(s.charAt(right))){
set.add(s.charAt(right));
maxLength=Math.max(maxLength,right-left+1);
right++;
}else{
set.remove(s.charAt(left));
left++;
}
}
returnmaxLength;
}
```
以上是LeetCode题库中一些常见的Java题目的解题思路和代码示例。通过刷LeetCode题库,不仅可