力扣打卡——day01

128. 最长连续序列 - 力扣(LeetCode)

这道题目最开始大家想的肯定是sort,然后计数计算最长序列。但是要求时间复杂度为:o(n),就不能用sort 了。一般在leetcode中,对时间复杂度有要求,就用空间来换,对空间复杂度有要求,就用时间来换。

基于这种思路我们就想要求最长的,就是要记录下有没有相邻的元素,比如遍历到100这个元素,我们需要查看99, 101这两个元素在不在序列中,这样去更新最大长度。而记录元素有没有这个事我们太熟悉了,用set这种数据结构,而set这种数据结构是需要o(n)的空间来换取的,这就是我们刚才说的用空间来换时间。

复制代码
class Solution {
    public int longestConsecutive(int[] nums) {
        //使用空间复杂度进行换时间复杂度
        Set<Integer> numsSet=new HashSet<>();
        for(int num:nums){
            numsSet.add(num);
        }
        int longMax=0;
        for(int num: nums){
             int number=num;
            if(numsSet.remove(number)){
                int currtLength=1;
                //向左进行移动
                while(numsSet.remove(number-1)) number--;
                currtLength+=(num-number);

                //向右进行移动
                number=num;
                while(numsSet.remove(number+1)) number++;
                currtLength+=(number-num);
                //最后进行比较
                longMax= Math.max(currtLength,longMax);
            }
          
        }
        return longMax;
    }
}

283. 移动零 - 力扣(LeetCode)

思路: 使用双指针将非0的数据向前移动,末尾进行补零

复制代码
class Solution {
    public void moveZeroes(int[] nums) {
        //使用双指针就行
        int slow=0;

        //将非0的数据向前移动
        for(int fast=0;fast<nums.length;fast++){
            if(nums[fast]!=0){
                nums[slow++]=nums[fast];
            }
        }
        //末尾进行补零
        for(;slow<nums.length;slow++){
            nums[slow]=0;
        }
        
    }
}
相关推荐
长不胖的路人甲几秒前
斐波那契查找Java 实现 + 完整思路
java·开发语言
待磨的钝刨1 分钟前
深入理解主成分分析(PCA)
人工智能·线性代数·算法·机器学习
祐樹11 分钟前
1987年5月25日下午15-17点出生性格、运势和命运
java
正儿八经的少年19 分钟前
Spring 事务保证数据一致性
java·数据库·spring
Lakers-2434 分钟前
1987年5月29日晚上19-21点出生性格、运势和命运
java
AI人工智能+电脑小能手39 分钟前
【大白话说Java面试题 第194题】【08_Kafka篇】第10题:简述 Kafka 的 Rebalance 机制?
java·kafka·消费者组·rebalance·分布式消息队列
__log44 分钟前
幂等性设计:从“重复提交“到“稳如磐石“的系统防护
java·开发语言·spring boot
spider_xcxc1 小时前
Helm 部署 K8s 集群完整笔记
java·开发语言·kubernetes
祐樹1 小时前
1987年5月23日下午15-17点出生性格、运势和命运
java
zhangjw341 小时前
第35篇:Spring Boot入门:自动配置+快速搭建,简化企业开发
java·spring boot·后端