Leetcode面试经典150题-27.移除元素

解法都在代码里,不懂就留言或者私信

超级简单的题,一般出现在笔试里,但是不知道为啥字节高频题里会排的那么靠前

java 复制代码
class Solution {
    public int removeElement(int[] nums, int val) {
        /**如果数组为空,没什么可操作的,如果长度为1但是和val不一样也没什么可操作的*/
        if(nums.length == 0 || (nums.length == 1 && nums[0] != val)) {
            return nums.length;
        }
        /**对于其他一般的情况,我的思路是等于val往后换,不等于的往前换,等于区域的左边界的下标就是我们要的长度
        初始状态的时候,先把等于区域的左边界设置为数组的长度(第一个越界位置),发现1个等于的就跟这个数的前一个交换
        没错!荷兰国旗问题的变种 */
        int curIndex = 0;
        int equalsMostLeft = nums.length;
        while(curIndex < equalsMostLeft) {
            if(nums[curIndex] != val) {
                curIndex ++;
            } else {
                /**缓过来也得继续看看是不是等于val */
                swap(nums,curIndex, --equalsMostLeft);
            }
        }
        return equalsMostLeft;
    }

    /**交换数组中的元素 */
    public void swap(int[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}
相关推荐
玖玥拾6 分钟前
LeetCode 383 赎金信
算法·leetcode
维克兜率天8 分钟前
5.3 宏观因子:抬头看天
笔记·python·深度学习·算法·量化
LuminousCPP10 分钟前
数据结构-排序(五):计数排序与排序专题阶段总结|从外部归并到线性排序,再看算法边界与选型
c语言·数据结构·笔记·算法·排序算法
流云枫14 分钟前
003-上下文窗口:物理限制、KV Cache 与工程应对策略
算法
盟道科技17 分钟前
小程序订阅消息大规模投递实践:频控令牌池、Redis限流与失败补偿设计
分布式·算法·小程序
工具派20 分钟前
视频场景检测是怎么找到切镜头位置的?三种思路与实测
算法·计算机视觉·视频
XuCoder23 分钟前
LangChain 模型调用:invoke、stream、batch 到底该怎么选?
面试
钓鱼的肝24 分钟前
csp-j-s总结(1)
c++·笔记·算法·青少年编程
流云枫24 分钟前
001-Transformer架构与Self-Attention机制深度解析
算法
秋天的一阵风40 分钟前
⚡2026 年了,十万级表格还只会「虚拟滚动」?难怪你的页面照样卡顿
前端·javascript·面试