【力扣hot100】128-最长连续序列、283-移动零

2024-03-31 23:28

本文主要是介绍【力扣hot100】128-最长连续序列、283-移动零,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

128. 最长连续序列

在这里插入图片描述

import java.util.*;public class Test {public static void main(String[] args) {int[] nums = {0, 3, 7, 2, 5, 8, 4, 6, 0, 1};int res = new Solution().longestConsecutive(nums);System.out.println(res);}
}class Solution {public int longestConsecutive(int[] nums) {if (nums == null || nums.length == 0) {return 0;}//数组转set集合,可以去重(连续序列重复的数字不算)Set<Integer> numsSet = new HashSet<>();for (int num : nums) {numsSet.add(num);}int longest = 0;for (Integer item : numsSet) {//set集合也可以遍历int length = 0;//若item-1不在set集合中,则item就是连续序列的第一个元素if (!numsSet.contains(item - 1)) {length++;//尝试扩展以item开头的连续序列while (numsSet.contains(item + 1)) {length++;item++;}}longest = Math.max(longest, length);}return longest;}
}

由于每个数字只会被遍历一次(无论是添加到HashSet中还是作为序列的起点被检查),所以整个算法的时间复杂度仍然是O(n)。

283. 移动零

在这里插入图片描述

用一个指针指到数组开头。从头开始遍历数组,看到不为 0 的数就 copy 到指针指向的位置,每 copy 完一个,指针就后移一个位置。

class Solution {public void moveZeroes(int[] nums) {int flag = 0;for(int i=0; i<nums.length; i++){if(nums[i]!=0){nums[flag] = nums[i];flag++;}}for(int i=flag; i<nums.length; i++){nums[i]=0;}}
}

这篇关于【力扣hot100】128-最长连续序列、283-移动零的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/865636

相关文章

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

双系统电脑中把Ubuntu装进外接移动固态硬盘的全过程

《双系统电脑中把Ubuntu装进外接移动固态硬盘的全过程》:本文主要介绍如何在Windows11系统中使用VMware17创建虚拟机,并在虚拟机中安装Ubuntu22.04桌面版或Ubunt... 目录一、首先win11中安装vmware17二、磁盘分区三、保存四、使用虚拟机进行系统安装五、遇见的错误和解决

使用FileChannel实现文件的复制和移动方式

《使用FileChannel实现文件的复制和移动方式》:本文主要介绍使用FileChannel实现文件的复制和移动方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录使用 FileChannel 实现文件复制代码解释使用 FileChannel 实现文件移动代码解释

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque