CodingBat Array-1模块unlucky1问题Java实现遇数组越界求助
问题分析与修复
数组越界的直接原因
你的代码循环从i=0开始,第一次循环时访问nums[i-1]等价于访问nums[-1],数组索引从0起始,负数索引直接触发数组越界异常。
逻辑偏差问题
题目要求仅检查数组的前2个位置或后2个位置中是否存在"1紧跟3"的情况,而你的代码遍历了整个数组,不符合题目限定的检查范围。
修正后的代码
public boolean unlucky1(int[] nums) { // 数组长度不足2时,不可能存在1紧跟3的情况 if (nums.length < 2) { return false; } // 检查前两个位置(索引0和1) if (nums[0] == 1 && nums[1] == 3) { return true; } // 检查最后两个位置(索引length-2和length-1) if (nums[nums.length - 2] == 1 && nums[nums.length - 1] == 3) { return true; } return false; }
补充说明
- 先判断数组长度是否小于2,避免后续访问索引时出现越界问题
- 直接针对题目要求的两个区域做检查,无需遍历整个数组,逻辑更清晰高效
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

