如何判断Java数组中是否存在相邻的元素1和3?代码优化咨询
解决数组中"1紧邻右侧是3"的判断问题
嘿,我看你现在的代码只能判断数组里有没有1,但要实现你要的「存在1且右侧紧邻是3」的逻辑,得调整一下思路哦!
首先得明确核心需求:我们要找数组中相邻的一对元素,第一个是1,第二个是3。这里要注意两个关键细节:
- 数组长度小于2时,直接返回false——因为连两个相邻元素都不存在
- 遍历的时候只能到倒数第二个元素,不然
i+1会触发数组越界异常
下面是修改后的代码,我加了注释帮你理解:
public boolean unlucky1(int[] nums) { // 边界处理:数组长度不足2,直接返回false if (nums.length < 2) { return false; } // 遍历到倒数第二个元素就停止,避免i+1超出数组范围 for (int i = 0; i < nums.length - 1; i++) { // 检查当前元素是1,且下一个元素是3 if (nums[i] == 1 && nums[i+1] == 3) { return true; // 找到符合条件的相邻对,立即返回true } } // 遍历完整个数组都没找到,返回false return false; }
我们来验证你给出的三个示例:
unlucky1([1, 3, 4, 5]):i=0时匹配条件,返回true ✔️unlucky1([2, 1, 3, 4, 5]):i=1时匹配条件,返回true ✔️unlucky1([1, 1, 1]):所有相邻对都不满足,返回false ✔️
这个写法的优势是提前终止——只要找到第一个符合条件的相邻对就立刻返回,不用遍历整个数组,性能更优。如果想用更简洁的Java 8流写法,也可以试试,但循环写法对新手来说更直观易懂。
内容的提问来源于stack exchange,提问作者gs650x
相关产品推荐
相关产品推荐

