java 算法面试题
Java算法面试题
Java是一种广泛使用的编程语言,具有很强的算法支持和丰富的算法库。在面试过程中,Java算法常常是面试官用来考察候选人编程和问题解决能力的重要方面。本文将为你介绍一些常见的Java算法面试题,并提供相应的解答和示例代码。
1. 反转字符串
题目描述:给定一个字符串,将其反转并返回。
解答示例:
```java
public class ReverseString {
    public static String reverse(String str) {
        StringBuilder builder = new StringBuilder();
        for (int i = str.length() - 1; i >= 0; i--) {
            builder.append(str.charAt(i));
        }
        String();
    }
    public static void main(String[] args) {
        String str = "Hello World";
        System.out.println(reverse(str)); // 输出 "dlroW olleH"
    }
}
```
2. 判断回文数
题目描述:给定一个整数,判断它是否是回文数,即正着读和反着读都相同。
解答示例:
```java
public class PalindromeNumber {
    public static boolean isPalindrome(int num) {
        String str = String.valueOf(num);
        int left = 0;
        int right = str.length() - 1;
        while (left < right) {
            if (str.charAt(left) != str.charAt(right)) {
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
    public static void main(String[] args) {
        int num = 12321;
        System.out.println(isPalindrome(num)); // 输出 true
    }
}
```
3. 查数组中的最大数和最小数
题目描述:给定一个整型数组,出数组中的最大数和最小数,并返回它们。
解答示例:
```java
public class MaxAndMinNumber {
    public static int[] findMaxAndMin(int[] nums) {
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        for (int num : nums) {
            if (num > max) {
                max = num;
            }
            if (num < min) {
                min = num;
            }
        }
        return new int[]{max, min};
    }
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5};
        int[] result = findMaxAndMin(nums);
        System.out.println("Max: " + result[0] + ", Min: " + result[1]); // 输出 "Max: 5, Min: 1"
    }
}
```
4. 排序链表
题目描述:给定一个链表,将其按升序排序并返回排序后的链表。
解答示例:
```javasortedlist
public class SortLinkedList {
    public static ListNode sortList(ListNode head) {
        if (head == null || == null) {
            return head;
        }
        ListNode slow = head;
        ListNode fast = ;
        while (fast != null && != null) {
            slow = ;
            fast = ;
        }
        ListNode mid = ;
        = null;
        ListNode left = sortList(head);
        ListNode right = sortList(mid);
        return merge(left, right);
    }
    private static ListNode merge(ListNode left, ListNode right) {

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。