21xrx.com
2024-11-22 07:38:11 Friday
登录
文章检索 我的文章 写文章
Java面试必备:常见算法题及解法详解
2023-06-15 00:32:13 深夜i     --     --
Java面试 算法题 代码实现

在Java面试中,算法题是必考的一部分。这些问题可以帮助面试官评估一个人的思维能力和解决问题的能力。因此,熟悉常见的算法问题和解决方案对于通过Java面试非常重要。在本文中,我们将针对一些常见的算法问题,提供详细的解决方案和代码案例。

1. 两数之和问题

这是一个非常基本的算法问题。给定一个整数数组和一个目标数字,找出数组中两数之和等于目标数字的两个数的下标。

解决这个问题的一种有效方法是使用哈希表。我们可以将数组中的每个元素插入哈希表中,并检查哈希表中是否存在当前数字的补码。在这种情况下,补码是目标数字减去当前数字的值。

代码实现:

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

  Map map = new HashMap<>();

  for (int i = 0; i < nums.length; i++) {

    int complement = target - nums[i];

    if (map.containsKey(complement)) {

      return new int[] { map.get(complement), i };

    }

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

  }

  throw new IllegalArgumentException("No two sum solution");

}

2. 最长公共前缀问题

这是一个简单的字符串问题。给定一组字符串,找出它们之间最长的公共前缀。如果没有公共前缀,则返回空字符串。

一种有效的解决方法是按字典顺序排列字符串,并比较第一个和最后一个字符串。这可以帮助我们确定字符串之间的共同前缀的最大长度。

代码实现:

public String longestCommonPrefix(String[] strs) {

  if (strs == null || strs.length == 0)

    return "";

  Arrays.sort(strs);

  String first = strs[0];

  String last = strs[strs.length - 1];

  int i = 0;

  while (i < first.length() && i < last.length() && first.charAt(i) == last.charAt(i)) {

    i++;

  }

  return first.substring(0, i);

}

3. 反转整数问题

给定一个整数,将其反转。例如,输入123,输出321。

一个简单的方法是使用模运算符,取出整数的个位数字,并将其添加到结果变量中。我们还要同时将整数复制为其余部分。这个过程一直持续到整数为0。

代码实现:

public int reverse(int x) {

  int result = 0;

  while (x != 0) {

    int tail = x % 10;

    int newResult = result * 10 + tail;

    if ((newResult - tail) / 10 != result)

      return 0;

    result = newResult;

    x = x / 10;

  }

  return result;

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复