算法边界情况处理套路总结

边界情况处理套路总结

套路1:数组/字符串为空或null

java 复制代码
// 返回类型根据题目要求选择
if (nums == null || nums.length == 0) {
    return 0;        // int类型
    return "";       // String类型
    return new ArrayList<>();  // List类型
    return new int[0];  // 数组类型
}

套路2:长度为1的特殊情况

java 复制代码
if (nums.length == 1) {
    return nums[0];  // 直接返回唯一元素
}

套路3:长度不够的情况

java 复制代码
// 滑动窗口:至少需要k个元素
if (nums.length < k) {
    return new int[0];
}

// 三数之和:至少需要3个数
if (nums.length < 3) {
    return new ArrayList<>();
}

套路4:初始化时处理边界

java 复制代码
// 找最大值/最小值:初始化为第一个元素
if (nums == null || nums.length == 0) {
    return 0;  // 或根据题目要求
}
int max = nums[0];  // 先判断非空,再初始化

常见返回值对照表

返回类型 找不到/为空时的返回值
int 0 或 -1(根据题目)
String ""
List<Integer> new ArrayList<>()
int[] new int[0]
boolean false

检查清单

做题时按这个顺序检查:

  1. null 检查:if (nums == null)
  2. 空数组/空字符串:if (nums.length == 0)
  3. 长度为1:if (nums.length == 1)
  4. 长度不够:if (nums.length < requiredLength)
  5. 参数有效性:if (k <= 0 || k > nums.length)
  6. 找不到结果:根据题目要求返回默认值

实际应用示例

java 复制代码
// 最大子数组和
public int maxSubArray(int[] nums) {
    if (nums == null || nums.length == 0) return 0;
    int max = nums[0];  // 初始化为第一个元素
    // ...
}

// 三数之和
public List<List<Integer>> threeSum(int[] nums) {
    List<List<Integer>> result = new ArrayList<>();
    if (nums == null || nums.length < 3) return result;
    // ...
}

// 滑动窗口
public int[] maxSlidingWindow(int[] nums, int k) {
    if (nums == null || nums.length == 0 || k <= 0 || k > nums.length) {
        return new int[0];
    }
    // ...
}
相关推荐
仰泳的熊猫43 分钟前
题目2570:蓝桥杯2020年第十一届省赛真题-成绩分析
数据结构·c++·算法·蓝桥杯
无极低码4 小时前
ecGlypher新手安装分步指南(标准化流程)
人工智能·算法·自然语言处理·大模型·rag
软件算法开发4 小时前
基于海象优化算法的LSTM网络模型(WOA-LSTM)的一维时间序列预测matlab仿真
算法·matlab·lstm·一维时间序列预测·woa-lstm·海象优化
superior tigre5 小时前
22 括号生成
算法·深度优先
努力也学不会java6 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
旖-旎6 小时前
二分查找(x的平方根)(4)
c++·算法·二分查找·力扣·双指针
ECT-OS-JiuHuaShan7 小时前
朱梁万有递归元定理,重构《易经》
算法·重构
智者知已应修善业7 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
khddvbe7 小时前
C++并发编程中的死锁避免
开发语言·c++·算法