题解 | #牧场里的编号顺序# java
牧场里的编号顺序
https://www.nowcoder.com/practice/6741b77f486a493da5258738323ddd3e
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param ids int整型一维数组 * @param n int整型 * @return int整型 */ public int longestConsecutive (int[] ids, int n) { // write code here // 初始化指针 int slow = 0; // 慢指针,指向当前递增序列的起始位置 int fast = 1; // 快指针,用于扫描数组中的元素 int length = 0; // 记录当前最长连续递增子序列的长度 // 遍历数组 while (fast <= ids.length - 1) { if (ids[fast] > ids[fast - 1]) { // 如果当前元素大于前一个元素,则继续扫描 fast++; } else { // 如果当前元素不大于前一个元素,表示递增序列中断 // 更新最长序列长度,并移动慢指针和快指针 length = Math.max(length, fast - slow); slow = fast; fast = slow + 1; } } // 返回最长序列长度(注意需要再次比较一次,以防最后一个递增序列没有被计算) return Math.max(length, fast - slow); } }
用的编程语言是Java。
该题考察的知识点包括:
- 数组的遍历和操作
- 最大值的比较
代码文字解释: 在代码中已经解释,没什么难点,就比较最大值和快慢指针而已。