当前位置: 首页 > news >正文

网站注册费北京南站地图

网站注册费,北京南站地图,wordpress header.php在哪里,怎么看网站有没有做百度推广Java 常见面试算法题汇总与解析 算法题是程序员面试中常见的一部分,也是提升编程能力的核心手段。本文将汇总一些 Java 中常见的算法题,并提供详细的解析和实现代码,帮助开发者更好地理解和掌握算法。 一、字符串相关算法 1.1 字符串反转 …

Java 常见面试算法题汇总与解析

算法题是程序员面试中常见的一部分,也是提升编程能力的核心手段。本文将汇总一些 Java 中常见的算法题,并提供详细的解析和实现代码,帮助开发者更好地理解和掌握算法。


一、字符串相关算法

1.1 字符串反转

问题描述:

给定一个字符串,返回反转后的结果。

实现代码:
public class StringReverse {public static String reverse(String str) {return new StringBuilder(str).reverse().toString();}public static void main(String[] args) {System.out.println(reverse("hello")); // 输出:olleh}
}

1.2 判断回文字符串

问题描述:

判断一个字符串是否为回文字符串。

实现代码:
public class PalindromeCheck {public static boolean isPalindrome(String str) {int left = 0, 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) {System.out.println(isPalindrome("level")); // 输出:trueSystem.out.println(isPalindrome("hello")); // 输出:false}
}

二、数组相关算法

2.1 两数之和

问题描述:

给定一个数组和一个目标值,找到两个数的索引,使它们的和等于目标值。

实现代码:
import java.util.HashMap;public class TwoSum {public static int[] twoSum(int[] nums, int target) {HashMap<Integer, Integer> 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 solution found");}public static void main(String[] args) {int[] result = twoSum(new int[]{2, 7, 11, 15}, 9);System.out.println("Indices: " + result[0] + ", " + result[1]);}
}

2.2 移动零

问题描述:

将数组中的所有 0 移动到末尾,同时保持其他元素的相对顺序。

实现代码:
public class MoveZeroes {public static void moveZeroes(int[] nums) {int index = 0;for (int num : nums) {if (num != 0) {nums[index++] = num;}}while (index < nums.length) {nums[index++] = 0;}}public static void main(String[] args) {int[] nums = {0, 1, 0, 3, 12};moveZeroes(nums);for (int num : nums) {System.out.print(num + " "); // 输出:1 3 12 0 0}}
}

三、动态规划相关算法

3.1 斐波那契数列

问题描述:

计算斐波那契数列的第 n 项。

实现代码:
public class Fibonacci {public static int fib(int n) {if (n <= 1) return n;int[] dp = new int[n + 1];dp[0] = 0;dp[1] = 1;for (int i = 2; i <= n; i++) {dp[i] = dp[i - 1] + dp[i - 2];}return dp[n];}public static void main(String[] args) {System.out.println(fib(10)); // 输出:55}
}

3.2 最大子序和

问题描述:

找到一个数组中连续子数组的最大和。

实现代码:
public class MaxSubArray {public static int maxSubArray(int[] nums) {int currentSum = nums[0];int maxSum = nums[0];for (int i = 1; i < nums.length; i++) {currentSum = Math.max(nums[i], currentSum + nums[i]);maxSum = Math.max(maxSum, currentSum);}return maxSum;}public static void main(String[] args) {System.out.println(maxSubArray(new int[]{-2, 1, -3, 4, -1, 2, 1, -5, 4})); // 输出:6}
}

四、树相关算法

4.1 二叉树的最大深度

问题描述:

计算二叉树的最大深度。

实现代码:
public class MaxDepth {static class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int val) {this.val = val;}}public static int maxDepth(TreeNode root) {if (root == null) return 0;return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));}public static void main(String[] args) {TreeNode root = new TreeNode(1);root.left = new TreeNode(2);root.right = new TreeNode(3);root.left.left = new TreeNode(4);root.left.right = new TreeNode(5);System.out.println(maxDepth(root)); // 输出:3}
}

4.2 验证二叉搜索树

问题描述:

判断一棵树是否为二叉搜索树。

实现代码:
public class ValidateBST {static class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int val) {this.val = val;}}public static boolean isValidBST(TreeNode root) {return validate(root, null, null);}private static boolean validate(TreeNode node, Integer lower, Integer upper) {if (node == null) return true;if (lower != null && node.val <= lower) return false;if (upper != null && node.val >= upper) return false;return validate(node.left, lower, node.val) && validate(node.right, node.val, upper);}public static void main(String[] args) {TreeNode root = new TreeNode(2);root.left = new TreeNode(1);root.right = new TreeNode(3);System.out.println(isValidBST(root)); // 输出:true}
}

通过本文的学习,相信你对 Java 中常见的算法题有了更清晰的认识和理解。这些算法涵盖了字符串、数组、动态规划和树的经典问题,适用于面试和实际开发。如果你有其他问题,欢迎在评论区讨论!

http://www.yayakq.cn/news/493631/

相关文章:

  • 软件开发者路线图新乡网站关键词优化
  • 设置网站解析北京朝阳区房价
  • 男女怎样做那个视频网站阿里云备案 网站备案
  • 如何提高 网站的点击量学做宝宝衣服网站好
  • 深圳网站建设叶林做彩票网站需要境外
  • 做网站的会淘宝美工么上海网站开发多少钱
  • 政务中心网站建设方案绵竹seo
  • 官方网站建设步骤溧阳手机网站哪里做
  • 网站主题设计特色公司免费取名
  • 婚恋网站制作要多少钱app软件制作教程
  • 青海建设局网站高端品牌网站设计公司
  • 网站建设平台是干什么的现在做微信开发网站多少钱
  • 东莞市微信网站建设品牌网站前台功能
  • 设计图片用什么软件好深圳百度seo培训
  • 网站的设计方法有哪些内容高级搜索技巧
  • 南京网站建设公司关键词出价计算公式
  • wordpress替代软件seo站外推广业务外包
  • 网站 详细设计免费网站建站方法
  • 绵阳手机网站建设网店设计模板免费
  • 网站建设与管理个人职业生涯规划书株洲网站建设公司
  • seo网站买网络编辑是做什么的
  • 网站后台页面企业网站下载
  • 网站做rss+wordpress2017年内蒙古建设厅网站
  • 自己做家具的网站大学生网站作品
  • 大沥网站建设公司百度seo整站优化公司
  • 云vps怎么搭建网站产教融合平台建设网站
  • 小企业网站建设一般收费wordpress建站教程linux
  • 单位网站中文域名到期续费服务器租用多少钱一月
  • 太原手机微网站建设对电子商务网站建设与维护的总结
  • 恶意推广网站杭州网站建设哪个平台好