java 常见算法题 2021
时间: 2023-10-20 21:03:09 浏览: 49
Java常见的算法题有很多,以下是一些常见的算法题目及其解决方法。
1. 求两个整数的最大公约数和最小公倍数。可以使用辗转相除法来求最大公约数,即不断用较大数除以较小数,直到余数为0,则较小数就是最大公约数。最小公倍数等于两数的乘积除以最大公约数。
2. 数组中找出第K大(小)的数。可以使用快速排序的思想,选取一个基准元素,将数组分为大于基准元素和小于基准元素的两部分,递归地在其中一部分中查找第K大(小)的数。
3. 判断一个字符串是否为回文串。可以使用双指针法,分别从字符串的开头和结尾开始遍历,判断对应字符是否相等,直到两指针相遇或交叉。
4. 实现链表的反转。可以使用迭代或递归的方式,将当前节点的下一个节点指向上一个节点,然后继续遍历链表。
5. 实现二分查找算法。对于有序数组,可以使用二分查找法,在数组的中间位置判断目标值与中间值的大小关系,然后缩小查找范围,直到找到目标值或查找范围为空。
6. 实现图的深度优先搜索(DFS)和广度优先搜索(BFS)。DFS使用递归的方式进行搜索,遍历当前节点的邻接节点,直到遍历完所有节点或找到目标节点。BFS使用队列进行搜索,将当前节点的邻接节点加入队列,并依次出队访问,直到找到目标节点或队列为空。
以上只是一些常见的算法题目,掌握这些算法可以帮助我们更好地理解和解决实际问题。当然,还有许多其他的算法题目,不断学习和练习才能更好地掌握。
相关问题
java 常见算法笔试题
好的,以下是一些常见的 Java 算法笔试题:
1. 冒泡排序算法的实现。
```
public static void bubbleSort(int[] array) {
int temp;
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
```
2. 快速排序算法的实现。
```
public static void quickSort(int[] array, int left, int right) {
if (left < right) {
int i = left, j = right, pivot = array[left];
while (i < j) {
while (i < j && array[j] >= pivot) {
j--;
}
if (i < j) {
array[i] = array[j];
i++;
}
while (i < j && array[i] < pivot) {
i++;
}
if (i < j) {
array[j] = array[i];
j--;
}
}
array[i] = pivot;
quickSort(array, left, i - 1);
quickSort(array, i + 1, right);
}
}
```
3. 二分查找算法的实现。
```
public static int binarySearch(int[] array, int target) {
int left = 0, right = array.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (array[mid] == target) {
return mid;
} else if (array[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
4. 斐波那契数列算法的实现。
```
public static int fibonacci(int n) {
if (n <= 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
```
5. 求最大公约数算法的实现。
```
public static int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
```
希望这些算法实现能够帮助你进行 Java 算法笔试。
java经典算法90题
《Java经典算法90题》 是一本针对Java程序员的算法练习题集。书中包含了90道经典算法题目,涵盖了各种常见的数据结构和算法问题,如数组、链表、栈、队列、树、图、排序、查找等。通过这本书,读者可以系统地学习和巩固与算法相关的知识,提高解决实际问题的能力。
对于初学者来说,这本书可以帮助他们建立起对基本算法和数据结构的理解和掌握。通过实践和思考,他们可以逐渐提高自己的编程能力,并能够运用所学知识解决实际工作中遇到的问题。
对于有一定编程经验的程序员来说,这本书可以帮助他们深入理解各种常见的算法和数据结构,并且提供了大量的练习题目,可以帮助他们巩固和提高自己的算法水平。
总之,《Java经典算法90题》是一本对于Java程序员来说非常有价值的算法练习题集,可以帮助他们系统地学习和掌握算法知识,提高自己的编程能力,是一本不可多得的好书。