java基础算法题(Java基础算法)

Java基础算法题

Java是一种面向对象的编程语言,因此算法对于Java编程师来说非常重要。Java基础算法涵盖了数据结构、排序、查找、字符串等方面的内容。这些算法题也是Java程序员必须掌握的基础知识,本文将介绍一些常见的Java基础算法题。

数据结构

数据结构是算法基础中的核心内容,数据结构的各种不同的实现方式帮助我们理解业务逻辑,并且能够进行快速查找。之前已经有很多关于Java面向对象和集合类的文章,所以这里不会展开具体的数据结构细节,而是会给出一些Java基础算法题的的示例。

1. 判断链表是否有环:给定一个链表,判断链表中是否有环。要求时间复杂度为O(n)。
```java
public boolean hasCycle(ListNode head) {
if(head == null){
return false;
}

ListNode fast = head.next;
ListNode slow = head;

while(fast != null && fast.next != null && slow != null){
if(fast == slow){
return true;
}

fast = fast.next.next;
slow = slow.next;
}

return false;
}
```

2. 翻转二叉树:翻转一棵二叉树。
```java
public TreeNode invertTree(TreeNode root) {
if(root == null){
return null;
}

TreeNode temp = root.left;
root.left = invertTree(root.right);
root.right = invertTree(temp);

return root;
}
```

排序和查找

Java中提供有很多排序和查找的工具类,因此这里会介绍一些基础的算法原理和Java中的实现方法。

1. 冒泡排序:冒泡排序算法的基本思想是多次遍历序列,每次遍历将序列中相邻的元素进行比较并交换,直到序列有序。时间复杂度为O(n^2)。
```java
public void bubbleSort(int[] arr){
if(arr == null || arr.length < 2){
return;
}

for(int i=0; i<arr.length-1; i++){
for(int j=0; j arr[j+1]){
swap(arr, j, j+1);
}
}
}
}

public void swap(int[] arr, int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
```

2. 二分查找:二分查找算法的基本思想是将有序的序列划分为两个部分,每次查找都将目标值与中间值比较,并根据比较结果缩小查找范围。时间复杂度为O(logN)。
```java
public int binarySearch(int[] arr, int target){
if(arr == null || arr.length == 0){
return -1;
}

int left = 0;
int right = arr.length-1;

while(left target){
right = mid - 1;
}else{
left = mid + 1;
}
}

return -1;
}
```

字符串

字符串是Java编程中经常需要处理的数据类型,因此掌握一些字符串算法技巧非常重要。

1. 最长回文子串:找到一个字符串的最长回文子串。时间复杂度为O(n^2)。
```java
public String longestPalindrome(String s) {
if(s == null || s.length() == 0){
return "";
}

int start = 0;
int end = 0;

for(int i=0; i end - start){
start = i - (len-1)/2;
end = i + len/2;
}
}

return s.substring(start, end+1);
}

public int expand(String s, int left, int right){
while(left >= 0 && right =0; i--){
for(int j=len2-1; j>=0; j--){
int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');
int p1 = i + j;
int p2 = i + j + 1;
int sum = mul + res[p2];

res[p1] += sum / 10;
res[p2] = sum % 10;
}
}

StringBuilder sb = new StringBuilder();
for(int i=0; i<res.length; i++){
if(sb.length() != 0 || res[i] != 0){
sb.append(res[i]);
}
}

return sb.length() == 0 ? "0" : sb.toString();
}
```

总结

Java基础算法是Java编程的基础,掌握好这些基础算法不仅能提高代码的效率,还能够解决实际问题。本文介绍了如何在Java中实现链表、二叉树、冒泡排序、二分查找、字符串相关的算法题,并给出了Java代码实现示例。当然还有很多其他的算法题需要掌握,需要在实际编程中不断积累,提高自己的算法水平。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/javapeixunrou.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月25日 上午6:56
下一篇 2023年4月25日 上午6:56

猜你喜欢