📅  最后修改于: 2023-12-03 15:11:20.155000             🧑  作者: Mango
给定一个整数数组,找出由数组中的唯一元素组成的最长子数组,并返回该子数组的长度。
输入: [1,2,3,2,1]
输出: 3
解释: 最长的唯一元素子数组是 [1,2,3]。
我们可以使用滑动窗口来解决该问题,具体步骤如下:
代码如下:
public int findMaxSubArray(int[] nums) {
int left = 0, right = 0;
int maxLen = 0;
HashSet<Integer> set = new HashSet<>();
while (right < nums.length) {
if (set.contains(nums[right])) {
set.remove(nums[left]);
left++;
} else {
set.add(nums[right]);
right++;
maxLen = Math.max(maxLen, set.size());
}
}
return maxLen;
}
时间复杂度:O(n),其中 n 是数组的长度。
滑动窗口是一种非常常见的算法思想,能够解决很多数组和字符串相关的问题。掌握这种思想,对于算法面试和实际开发都有很大的帮助。