数组相关的题目
2023-12-14 20:40:18
数组相关的题目
128. 最长连续序列
题目:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
- 很容易就能想到要先排序,再进行后续的处理。
- 有一个坑:该数组的值可能会有重复 比如 数组[1,2,0,1,0,1] ,最长序列为3,即[0,1,2]
应该怎么去重呢?两种办法:
①在排序的时候顺便就去重了
②在计算最长序列的时候去重 √ - 因为我选择了处理中去重,所以我的处理过程里有两种情况要处理
① nums[i] - 1 == nums[i-1] 需要将递增的序列数+1
② nums[i] == nums[i-1] 则跳过该节点
class Solution {
public int longestConsecutive(int[] nums) {
if(nums.length == 0) return 0;
Arrays.sort(nums);
int res = 1;
// 计算每一次的最长序列长度
int count = 1;
for(int i = 1; i < nums.length; i++){
// 重置
count = 1;
// 有两种情况需要处理
// nums[i] - 1 == nums[i-1] 需要将递增的序列数+1
// nums[i] == nums[i-1] 跳过该节点
while(i < nums.length && (nums[i] - 1 == nums[i-1] || nums[i] == nums[i-1])){
if(nums[i] - 1 == nums[i-1])
count++;
i++;
res = Math.max(res, count);
}
}
return res;
}
}
文章来源:https://blog.csdn.net/weixin_46367158/article/details/135002839
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!