力扣打卡——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;
        }
        
    }
}
相关推荐
云烟成雨TD16 小时前
Spring AI Alibaba 1.x 系列【77】执行取消
java·人工智能·spring
醇氧16 小时前
【Linux】Java 服务生产级部署指南:实现常驻后台、开机自启与系统服务化管理
java·开发语言
JAVA面经实录91717 小时前
Netty 全套系统化学习文档(零基础到高阶面试完整版)
java·后端
菜鸟‍17 小时前
LeetCode 1 27 和 704 || 两数之和 移除元素 二分查找
算法·leetcode·职场和发展
weixin_5231853217 小时前
Java面试高频题:Integer缓存机制与 equals、== 区别
java·缓存·面试
Hui Baby17 小时前
MCP SSE协议发送注意
java
仙俊红17 小时前
SpringBoot启动原理
java·spring boot·后端
星间都市山脉17 小时前
Android STS(Security Test Suite)完整介绍与测试流程
android·java·linux·windows·ubuntu·android studio·androidx
namexingyun17 小时前
拆解Fable 5三重安全护栏:模型路由、蒸馏防护与生物安全分类器的技术原理 - 微元算力(weytoken)
java·人工智能·python·安全·架构·ai编程
地铁潜行者18 小时前
加了幂等表,为什么消息重试反而不执行了?聊聊 MQ 消费幂等的边界
java·后端