力扣hot100-3(最长连续序列),4(移动零)

方法:哈希表(与其说是哈希,其实不如说是集合类,因为所用的方法都是Collection接口自带方法,而set下一般只会用到HashSet,而不会用TreeSet)

java 复制代码
class Solution {
    public int longestConsecutive(int[] nums) {
        Set<Integer> num_set = new HashSet<Integer>();
        for (int num : nums) {
            num_set.add(num);
        }//利用Set集合类去重

        int longestStreak = 0;

        for (int num : num_set) {
            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;
    }
}

方法:双指针

java 复制代码
class Solution {
    public void moveZeroes(int[] nums) {
        int n = nums.length, left = 0, right = 0;
        while (right < n) {
            if (nums[right] != 0) {
                swap(nums, left, right);
                left++;
            }
            right++;
        }
    }

    public void swap(int[] nums, int left, int right) {
        int temp = nums[left];
        nums[left] = nums[right];
        nums[right] = temp;
    }
}

左指针指向已确定非零元素的下一个索引,右指针一致向右遍历,遇到非零则将其安排到左指针位置,左指针+1。

相关推荐
我叫洋洋几秒前
C ++ [ hello world ]
c语言·c++·算法
奋发向前wcx1 小时前
y1,y2总复习笔记5 2026.7.19
数据结构·笔记·算法
战族狼魂4 小时前
高频面试题精选:分治与AI Agent架构
人工智能·算法·大模型·大语言模型
李剑一5 小时前
你用过网易的将军令嘛?它底层实现账号保护的原理相当简单粗暴
算法
Scott9999HH5 小时前
告别流量波动玄学!从法拉第电磁定律到底层 C/C++ 流量累积算法,深度解密工业级电磁流量计选型与开发
c语言·c++·算法
中达瑞和-高光谱·多光谱5 小时前
1nm到8nm光谱分辨率,你的应用该选哪款光谱相机?
算法·高光谱·高光谱相机
ChaoZiLL6 小时前
我的数据结构4-栈和队列
数据结构
香辣牛肉饭6 小时前
【算法】动态规划 最长公共子序列(LCS)
经验分享·笔记·算法·动态规划
miller-tsunami6 小时前
顺序表相关知识点
数据结构·顺序表