Java算法小知识

public class SumArray {

public static int sum(int\[\] arr) {

int total = 0;

for (int num : arr) {

total += num;

}

return total;

}

public static void main(String\[\] args) {

int\[\] nums = {1, 2, 3, 4, 5};

System.out.println(sum(nums)); // 输出 15

}

}

一、数组遍历类(求和、找最大值)

  1. 优先用增强for循环做单纯遍历,代码简洁;需要下标操作时改用普通for循环。

  1. 处理数组前建议先判空,避免 NullPointerException 。

  1. 找最值:先把首个元素设为初始值,再逐个比对,逻辑最直观。

二、字符串判断(回文串)

  1. 双指针是字符串、数组对称类问题的通用解法,效率高。

  1. charAt() 用来取字符,左右指针相向移动,一旦字符不等直接终止判断,减少无效循环。

三、斐波那契数列(递归&迭代)

  1. 递归写法代码极简,但重复计算多,n偏大时效率极低、易栈溢出,仅适合理解逻辑。

  1. 迭代(循环)空间、时间复杂度更优,实战优先使用。

  1. 先处理 n=0、n=1 边界条件,是递归/循环类题目的常规习惯。

四、冒泡排序

  1. 排序类算法核心是比较+交换,冒泡每一轮确定一个末尾有序元素。

  1. 外层控制轮数,内层控制每轮比较范围,每完成一轮,比较区间就缩短一位。

  1. 可加标记优化:如果某一轮没有发生交换,说明数组已有序,直接跳出循环。

五、两数之和(哈希表应用)

  1. 哈希表(HashMap) 擅长快速查找,能把查找复杂度从O(n)降到O(1)。

  1. 解题思路转换:不要固定"找两个数",换成求差值,一次遍历就能完成,不用双重循环。

  1. 先查再存,保证不会重复使用同一个元素。