【力扣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

相关文章

利用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

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

Python重命名文件并移动到对应文件夹

《Python重命名文件并移动到对应文件夹》在日常的文件管理和处理过程中,我们可能会遇到需要将文件整理到不同文件夹中的需求,下面我们就来看看如何使用Python实现重命名文件并移动到对应文件夹吧... 目录检查并删除空文件夹1. 基本需求2. 实现代码解析3. 代码解释4. 代码执行结果5. 总结方法补充在

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2

poj2406(连续重复子串)

题意:判断串s是不是str^n,求str的最大长度。 解题思路:kmp可解,后缀数组的倍增算法超时。next[i]表示在第i位匹配失败后,自动跳转到next[i],所以1到next[n]这个串 等于 n-next[n]+1到n这个串。 代码如下; #include<iostream>#include<algorithm>#include<stdio.h>#include<math.