21xrx.com
2024-12-22 23:02:41 Sunday
登录
文章检索 我的文章 写文章
Java面试常问的算法题及解答案例
2023-06-12 15:47:50 深夜i     --     --
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--];

  }

}

  
  

评论区

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