2024/9/22 leetcode 128题 283题

news2024/11/13 22:29:37

目录

128.最长连续序列

题目描述

题目链接

解题思路与代码

题目2

题目描述

题目链接

解题思路与代码

=====================================

128.最长连续序列

题目描述

给定一个未排序的整数数组 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

提示:

  • 0 <= nums.length <= 105
  • -109 <= nums[i] <= 109

题目链接

128.最长连续序列

解题思路与代码

本题目就是先使用一个set数组遍历原数组,去重,然后正式开始我们的逻辑。

就拿样例2来举例        

longestidx就是最终结果,每次遍历nums,然后如果该数的前一位不存在,说明可以从这个数开始统计连续区间,currentnum就是统计每一段区间长度,与最终结果取最大值,从而使得结果最大。

(c++代码)

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {

        unordered_set<int> num_set;
        for(auto num : nums) {
            num_set.insert(num);
        }
        int longestidx = 0;
        for(auto num : nums) {
            if(!num_set.count(num - 1)) {
                int currentnum = num;
                int currentidx = 1;

                while(num_set.count(currentnum + 1)) {
                    currentnum ++;
                    currentidx ++;
                }
                longestidx = max(longestidx, currentidx);
            }
        }
        return longestidx;
    }

};

(java代码)

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 : nums) {
            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;
    }
}

题目2

题目描述

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]
输出: [0]

提示:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

进阶:你能尽量减少完成的操作次数吗?

题目链接

283.移动零

解题思路与代码

本题题目就是双指针,我们直接看图,就用第一个样例模拟。

第一次循环

第二次循环

第三次循环

第四次循环

第五次循环

此时我们已经将非零数字都弄到前面了,剩下部分全部填0,用slow扫尾。

(c++代码)

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        if(nums.size()<2) return;
        int slow = 0,fast = 0;
        for(;fast<nums.size();fast++){
            if(nums[fast]!=0){
                nums[slow] = nums[fast];
                slow ++;
            }
        }
        for(;slow<nums.size();slow++){
            nums[slow]=0;
        }
    }
};

(java代码)

class Solution {
    public void moveZeroes(int[] nums) {
        int fast = 0, slow = 0;
        for(; fast < nums.length; fast ++ ) {
            if(nums[fast] != 0) {
                nums[slow] = nums[fast];
                slow ++;
            }
        } 
        while(slow < nums.length) {
            nums[slow ] = 0;
            slow ++;
        }
    }
}

=========================================================================

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2154969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

秩一的等价转化

Lemma 2. For a positive semi-definite Hermitian matrix A ∈ C M M \mathbf{A}\in\mathbb{C}^{M\times M} A∈CMM, the condition Rank ( A ) 1 \left(\mathbf{A}\right)1 (A)1 is equivalent to t h e following conditions the\textit{ following conditions} the fol…

使用GPU 加速 Polars:高效解决大规模数据问题

Polars 最近新开发了一个可以支持 GPU 加速计算的执行引擎。这个引擎可以对超过 100GB 的数据进行交互式操作能。本文将详细讨论 Polars 中DF的概念、GPU 加速如何与 Polars DF协同工作&#xff0c;以及使用新的 CUDA 驱动执行引擎可能带来的性能提升。 Polars 核心概念 Polar…

最新 idea 2024 入门使用详细教程

IntelliJ IDEA&#xff1a;这是一款由JetBrains公司开发的Java集成开发环境&#xff08;Integrated Development Environment&#xff09;&#xff0c;被广泛认为是目前Java开发者最好的集成开发工具之一。它支持Java、Groovy、Kotlin等多种编程语言&#xff0c;并且提供了丰富…

语言RPA流程组件介绍--获取网页信息

&#x1f6a9;【组件功能】&#xff1a;获取浏览器中显示网页的网页标题、源代码、网址、编码等信息 配置预览 配置说明 获取 网页源代码/标题/网址/编码 iframe 支持T或# 若获取的信息是框架iframe中的信息&#xff0c;需要手动填写框架名称&#xff0c;框架使用方法:框架…

[数据结构与算法·C++] 笔记 1.4 算法复杂性分析

1.4 算法复杂性分析 算法的渐进分析 数据规模 n 逐步增大时, f(n)的增长趋势当 n 增大到一定值以后&#xff0c;计算公式中影响最大的就是 n 的幂次最高的项其他的常数项和低幂次项都可以忽略 大O表示法 函数f&#xff0c;g定义域为自然数&#xff0c;值域非负实数集定义: …

[数据结构与算法·C++] 笔记 1.5类与对象

类与对象 类的概念 一个东西满足这个类的特征 -> 这个东西是这个类的一个实例 -> 实例化共同特点(变量)->构成数据结构归纳行为(函数)->操作数据结构(抽象)可理解为在结构体中加入函数 类的定义 看上去像“带函数的结构体” class Rectangle { public:int w, h;…

会声会影2025视频剪辑教学

会声会影2025是一款超级受欢迎的视频播放软件&#xff0c;用于剪辑和编辑各种类型的视频素材。软件具有直观的用户界面&#xff0c;使得即使对于初学者来说也能轻松上手。该软件提供了各种创意工具&#xff0c;可以帮助用户实现他们的创意想法。用户可以裁剪、合并和重新排列视…

【C++】类和对象(下)相关练习

1. 求123...n 题目要求和&#xff0c;但是像循环&#xff0c;递归&#xff0c;求和公式这样的方法都不让用&#xff0c;这种情况下我们最先想到的就是static成员变量的使用。我们每创建一个类对象就会调用一下构造函数&#xff0c;加上static修饰后出局部作用域不会销毁&#x…

【Java集合】深入了解ArrayList实现原理

概述 1.数据存储是基于动态数组实现的&#xff0c;默认初始容量为10。 2.添加数据时&#xff0c;首先需要检查元素个数是否超过数组容量&#xff0c;如果超过了则需要对数组进行扩容&#xff08;1.5倍&#xff09;&#xff1b;插入数据时&#xff0c;需要将从插入点 k 开始到数…

【FPGA】编程方式

FPGA编程方式 1 什么是PLD&#xff1f;2 什么是颗粒度&#xff1f;3 可编程逻辑器件的编程方式有哪些&#xff1f;3.1 SRAM 编程技术3.2 Flash/EEPROM 编程技术3.3 反熔丝编程技术3.4 编程技术比较 参考资料 1 什么是PLD&#xff1f; 可编程逻辑器件 英文全称为&#xff1a;pr…

使用 Terminator 的广播功能,其他窗口中输入的字母会加倍重复

现象 比如我在窗口中输入的是 ls -l&#xff0c;那么其他广播中的其他窗口输入的则会变成 llss --ll。 看大神们的分析&#xff0c;造成这个的原因可能是由于 ibus 中的一个 bug。而不是 Terminator 软件的问题。而且总会在新的 ibus 版本中出现问题&#xff0c;所以作者已经放…

构建与优化自定义进程池

1. 什么是进程池&#xff1f; 简单来说&#xff0c;进程池就是预先创建固定数量的工作进程&#xff0c;通过设计任务队列或调度算法来分配任务给空闲的进程 —— 实现“负载均衡”。 2. 进程池框架设计 枚举错误返回值&#xff1a; enum {UsageError 1,ArgError,PipeError };…

SpringBoot环境配置(Spring Boot Profile)

一、介绍 在Spring Boot中&#xff0c;spring.profiles 配置用于定义不同环境下的配置文件。这使得应用可以在不同的环境中使用不同的配置&#xff0c;比如开发环境、测试环境和生产环境等。这种方式可以避免在代码中硬编码配置信息&#xff0c;并且能够更灵活地管理应用的环境…

Linux之实战命令02:shred应用实例(三十六)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

12年计算机408考研-计算机网络

【题33】在TCP/IP体系结构中&#xff0c;直接为ICMP提供服务的协议是&#xff08;B&#xff09; A. PPP B.IP C.UDP D. TCP ICMP报文协议处与网际层&#xff0c;PPP协议处于数据链路层&#xff0c;TCP和UDP都是运输层协议。 他们都由IP直接提供服务。 【题…

算法题之每日温度

每日温度 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例 1: 输入…

【数据仓库】数据仓库层次化设计

一、基本概念 **1. RDS&#xff08;RAW DATA STORES&#xff0c;原始数据存储&#xff09;** RDS作为原始数据存储层&#xff0c;用于存储来自各种源头的未经处理的数据。这些数据可能来自企业内部的业务系统、外部数据源或各种传感器等。RDS确保原始数据的完整性和可访问性&…

物理学基础精解【9】

文章目录 直线与二元一次方程两直线夹角直线方程斜率两点式方程截距式方程将不同形式的直线方程转换为截距方程直线的一般方程直线一般方程的系数有一个或两个为零的直线 参考文献 直线与二元一次方程 两直线夹角 两直线 y 1 k 1 x b 1 , y 2 k 2 x b 2 形成夹角 a 1 和 a…

MATLAB语言编写的EKF程序,带大量的中文注释

三维非线性状态量的EKF&#xff08;扩展卡尔曼滤波&#xff09;&#xff0c;几乎每一行都有中文注释&#xff0c;方便初学者上手。 文章目录 代码说明绘图 代码说明 状态变量&#xff1a;x 表示三维状态&#xff0c;包括位置和速度。 协方差矩阵&#xff1a;P 用来表示估计的…

构建数字化生态系统:打造数字化转型中开放协作平台的最佳实践和关键实施技巧

在数字化转型浪潮中&#xff0c;企业如何确保成功实施至关重要。除了技术上的革新&#xff0c;企业还必须在战略执行、架构优化以及合规性管理等方面掌握最佳实践。随着云计算、大数据、人工智能等新兴技术的迅速发展&#xff0c;企业通过正确的实施技巧不仅能提升业务效率&…