21xrx.com
2025-03-26 19:53:04 Wednesday
文章检索 我的文章 写文章
Java面试常问的算法题及解答案例
2023-06-12 15:47:50 深夜i     7     0
Java 面试 算法

在Java面试中,算法题几乎是必问的一项内容。这些算法题旨在考察应聘者的编程能力、思维逻辑、解决问题能力等方面。本文将为大家带来一些Java面试中常问的算法题,并给出解答方案。

1. 两数之和

题目描述:给定一个整数数组nums和一个目标值target,请在数组中找出和为目标值的两个整数,并返回它们的下标。

示例:nums = [1, 2, 3, 4, 5], target = 7,返回 [2, 4]。

解答方案:

public int[] twoSum(int[] nums, int target) {
  int[] result = new int[2];
  HashMap
  map = new HashMap<>();
 
  for(int i = 0; i < nums.length; i++){
    if(map.containsKey(target - nums[i])){
      result[1] = i;
      result[0] = map.get(target - nums[i]);
      return result;
    }
    map.put(nums[i], i);
  }
  return result;
}

2. 判断链表是否有环

题目描述:给定一个链表,判断链表是否有环。

解答方案:

public boolean hasCycle(ListNode head) {
  if(head == null || head.next == null) return false;
  ListNode slow = head;
  ListNode fast = head.next;
  while(slow != fast){
    if(fast == null || fast.next == null) return false;
    slow = slow.next;
    fast = fast.next.next;
  }
  return true;
}

3. 合并两个有序数组

题目描述:给定两个有序数组nums1和nums2,将这两个数组合并成一个有序数组。

解答方案:

public void merge(int[] nums1, int m, int[] nums2, int n) {
  int i = m - 1, j = n - 1, k = m + n - 1;
  while(i >= 0 && j >= 0){
    if(nums1[i] > nums2[j]){
      nums1[k--] = nums1[i--];
    }else{
      nums1[k--] = nums2[j--];
    }
  }
  while(j >= 0){
    nums1[k--] = nums2[j--];
  }
}

  
  

评论区