当前位置: 首页 > article >正文

最长连续序列

题目描述

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。

示例 2:

输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

 代码实现

import java.util.Arrays;
class Solution {
    public int longestConsecutive(int[] nums) {
        if(nums.length == 0){
            return 0;
        }
        Set set = new HashSet<>();
        for (int i = 0; i < nums.length; i++) {
            set.add(nums[i]);
        }
        int n=set.size();
        Object[] array=set.toArray(new Object[n]);
        Arrays.sort(array);
        int max_serise = 1;
        int temp = 1;
        for(int i=1;i<array.length;i++){
            int num1 =Integer.parseInt(array[i].toString());
            int num2 =Integer.parseInt(array[i-1].toString())+1;
            if(num1==num2){
                temp=temp+1;
                if(temp>max_serise){
                    max_serise=temp;
                }
            }else{
                temp=1;
            }
        }
        return max_serise;
    }
}

官方思路:

class Solution {
    public int longestConsecutive(int[] nums) {
        Set<Integer> num_set = new HashSet<Integer>();
        for (int num : nums) {
            num_set.add(num);
        }
        int longestStreak = 0;
        for (int num : num_set) {
            if (!num_set.contains(num - 1)) {
                int currentNum = num;
                int currentStreak = 1;
                while (num_set.contains(currentNum + 1)) {
                    currentNum += 1;
                    currentStreak += 1;
                }

                longestStreak = Math.max(longestStreak, currentStreak);
            }
        }
        return longestStreak;
    }
}

注意:集合arrayList默认返回Object类,而不是String类 !!!!

incompatible types: Object cannot be converted to String-CSDN博客

查漏补缺:

java中object类对象转换成int对象的两种方法

1.先把object对象转换成String,在用Inetger里的parseInt转成int

Objcet obj;
int a= Integer.parseInt(obj.toString());

2.先把object强转成Long,再转为int

Object obj ;
Long long = (Long) obj;
int a= long.intValue();

其他补充 

Java中List,Set,数组的互相转换_java 1.8 list转set-CSDN博客

Java中Arrays.sort()的三种常用用法(自定义排序规则)_arrays.sort自定义排序-CSDN博客


http://www.kler.cn/a/400389.html

相关文章:

  • 自动化运维-检测Linux服务器CPU、内存、负载、IO读写、机房带宽和服务器类型等信息脚本
  • day-17 反转字符串中的单词
  • 【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法
  • QT仿QQ聊天项目,第三节,实现聊天界面
  • 多模态基础模型:从专家到通用助手
  • C++中的桥接模式
  • docker使用,docker图形化界面+docker详细命令
  • VBA学习笔记:点击单元格显示指定的列
  • Linux网络:基于文件的网络架构
  • Object.defineProperty和响应式
  • 学习笔记025——Git基本基本命令
  • tcp 超时计时器
  • NLP论文速读(多伦多大学)|利用人类偏好校准来调整机器翻译的元指标
  • 华为OD机试-日志采集 E100
  • 线程(二)【线程控制】
  • YOLOv7-0.1部分代码阅读笔记-test.py
  • 使用Python编写一个简单的网站爬虫,从网站上抓取新闻标题和链接。
  • Bufferevent and SSL
  • 利用 `OpenCV` 和 `Matplotlib` 库进行图像读取、颜色空间转换、掩膜创建、颜色替换
  • Gin HTML 模板渲染
  • FPGA 第7讲 简单组合逻辑译码器
  • 案例精选 | 某知名教育集团基于安全运营平台的全域威胁溯源实践
  • 解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题
  • linux开机不显示转到window
  • 鸿蒙中位置权限和相机权限
  • 远程jupyter lab的配置