给定一个未排序的整数数组`nums`,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 示例 输入:`nums = [100,4,200,1,3,2]` 输出:`4` 解释:最长数字连续序列是 `[1,2,3,4]`。它的长度为 `4`。 输入:`nums = [0,3,7,2,5,8,4,6,0,1]` 输出:`9`
实现思路:
首先将数组中的所有数存入哈希表中,并标记为未访问过。依次遍历每个数,如果它之前没有被访问过,那么就向左、向右依次扩展,直到找到不连续的数为止。记录下连续数字序列的长度,并更新哈希表中访问过的数的标记。最后返回最长连续序列的长度即可。
代码实现:
class Solution { public int longestConsecutive(int[] nums) { Set<Integer> num_set = new HashSet<Integer>(); for (int num : nums) { num_set.add(num); } int max_len = 0; for (int num : num_set) { if (!num_set.contains(num - 1)) { int cur_num = num; int cur_len = 1; while (num_set.contains(cur_num + 1)) { cur_num += 1; cur_len += 1; } max_len = Math.max(max_len, cur_len); } } return max_len; } }
好长时间不面试了,转部门的转了快一个月突然约面试了,有点措手不及,答得不是很好,面试八股还是得常复习啊,两三周不碰就生疏了。也算是敲响了一个警钟吧。
#我的实习求职记录##我的求职思考##2024暑期实习##实习##如何判断面试是否凉了#