Leetcode JAVA刷刷站(27)移除元素

news2025/1/12 12:29:04

一、题目概述

二、思路方向

       为了解决这个问题,你可以使用双指针的方法来原地移除所有等于 val 的元素,并返回不等于 val 的元素数量。

三、代码实现 

public class Solution {  
    public int removeElement(int[] nums, int val) {  
        int left = 0; // 左指针,指向不等于val的元素应该存放的位置  
        for (int right = 0; right < nums.length; right++) { // 右指针,遍历数组  
            if (nums[right] != val) { // 如果当前元素不等于val  
                nums[left] = nums[right]; // 将当前元素放到左指针的位置  
                left++; // 左指针向右移动一位  
            }  
        }  
        return left; // 左指针的位置就是不等于val的元素数量  
    }  
  
    public static void main(String[] args) {  
        Solution solution = new Solution();  
        int[] nums = {3, 2, 2, 3};  
        int val = 3;  
        int k = solution.removeElement(nums, val);  
        System.out.println("不等于val的元素数量:" + k);  
        System.out.println("修改后的数组(前k个元素):");  
        for (int i = 0; i < k; i++) {  
            System.out.print(nums[i] + " ");  
        }  
    }  
}

执行结果:

四、小结

       在这个实现中,我们使用两个指针,left 和 rightleft 指针始终指向下一个不等于 val 的元素应该存放的位置,而 right 指针用于遍历整个数组。当遍历到不等于 val 的元素时,我们将其复制到 left 指针指向的位置,并将 left 指针向右移动一位。这样,遍历结束后,数组的前 left 个位置就是所有不等于 val 的元素,而 left 的值就是这些元素的总数。

       这种方法的时间复杂度是 O(n),其中 n 是数组 nums 的长度,因为我们只需要遍历数组一次。空间复杂度是 O(1),因为我们直接在原数组上进行修改,没有使用额外的空间(除了几个用于迭代的变量)。

 结语 

我们永远无法估摸某一刻的价值

直到其成为回忆

!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2040109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

结构开发笔记(四):solidworks软件(三):绘制36x36方块摄像头示意体

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/141187797 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

【中国数据库前世今生】数据存储管理的起源与现代数据库发展启蒙

记录开启本篇的目的: 作为1名练习时长2年半的DBA&#xff0c;工作大部分时间都在和数据库打交道&#xff0c;包括Oracle,Mysql,Postgresql,Opengauss等国内外数据库。但是对数据库的发展史却知之甚少。 正好腾讯云开发者社区正在热播:【纪录片】中国数据库前世今生,借此机会了解…

C语言 | Leetcode C语言题解之第337题打家劫舍III

题目&#xff1a; 题解&#xff1a; struct SubtreeStatus {int selected;int notSelected; };struct SubtreeStatus dfs(struct TreeNode *node) {if (!node) {return (struct SubtreeStatus){0, 0};}struct SubtreeStatus l dfs(node->left);struct SubtreeStatus r df…

ubuntu22.04不生成core文件

一、检查服务器的core文件是否打开 ulimit -a //查看时候打开core 如果core file size 是0就是关闭的&#xff01;服务一般都是关闭的&#xff01;将他打开即可&#xff01; ulimit -c size//设置core file的大小&#xff0c;自定义 此时打开就可以生成了core文件了&#xff…

C语言 | Leetcode C语言题解之第336题回文对

题目&#xff1a; 题解&#xff1a; #define SIZE 9470 #define N 168000 #define P 13331typedef unsigned long long ULL; ULL p[301];//p[i]存储P^ivoid init()//初始化p进制次幂数组 {int i;p[0]1;for(i1;i<300;i){p[i]p[i-1]*P;} }int** palindromePairs(char**words,…

node异常:npm ERR! gyp verb check python checking Python executable “python2“ in t

node异常:npm ERR! gyp verb check python checking Python executable "python2" in t node异常&#xff1a; npm ERR! gyp verb check python checking for Python executable "python2" in t降低版本&#xff1a;npm install -g npm6.14.4 欢迎关注&a…

设计模式六大原则(一)--单一职责原则

GPT-4o (OpenAI) 单一职责原则&#xff08;Single Responsibility Principle&#xff0c;SRP&#xff09;是面向对象设计中的一条基本原则。该原则的核心思想是&#xff1a;一个类应该只有一个引起它变化的原因。换句话说&#xff0c;一个类应该只有一个职责&#xff08;即一个…

【嵌入式操作系统(Linux篇)】知识点期末复习(2)

以下是关于嵌入式操作系统&#xff08;Linux篇&#xff09;的知识点总结版 目录 ​ part 1 Linux系统基础 1、嵌入式OS(EOS): 2、嵌入式操作系统的特点 3、嵌入式Linnx的优势 4、Linnx是什么&#xff1f;是一种UNIX操作系统的克隆 5、Linux操作系统整体介绍. (1)Lin…

智能外呼机器人助力电销

在接回一家公司的电话时&#xff0c;听着员工那动听的声音&#xff0c;你或许会猜到电话那头是个清纯美丽的女孩&#xff0c;其实&#xff0c;打电话给你的只是一个机器人。外呼智能机器人开启了智能人机交互时代。 1、情绪稳定 每个电话都可以用最佳的声音和答案与客户进行沟…

SpringBoot响应式编程(2)WebFlux入门

一、概述 1.1简介 简单来说&#xff0c;Webflux 是响应式编程的框架&#xff0c;与其对等的概念是 SpringMVC。两者的不同之处在于 Webflux 框架是异步非阻塞的&#xff0c;其可以通过较少的线程处理高并发请求。 WebFlux&#xff1a;底层完全基于nettyreactorspringweb 完成…

深入解析 vue 3 获取响应式数据

Vue 3 引入了一个全新的响应式系统&#xff0c;其中最核心的就是 reactive 和 ref。它们是实现响应式数据的基础&#xff0c;用于创建可以自动跟踪变化并更新视图的对象和变量。 1. reactive&#xff1a;响应式对象 1、概念 reactive 是用于创建响应式对象的 API。它接收一个…

HighConcurrencyCommFramework c++通讯服务器框架 :Epoll:事件驱动技术

在单独的进程或者线程中运行&#xff0c;收集处理事件&#xff0c;没有上下文切换的消耗&#xff0c;高校&#xff1b; 写小demo很简单&#xff0c;正经让epoll技术融合到商业环境中&#xff0c;那么难度很大&#xff1b; 达到的效果&#xff1a; 1.理解工作原理&#xff1b…

Splay学习笔记

Splay的两个关键函数&#xff0c;rotate和splay rotate就是正常的旋转。 splay(x,target)表示把x旋转为target的子节点 这里需要分讨&#xff0c;对于x的父亲y和祖父z 若 z target&#xff0c; 则直接转x若 x 与 y 方向相同&#xff0c;先转y&#xff0c;后转x若 x 与 y 方…

html+css网页制作 电商华为商城首页 ui还原度100%

htmlcss网页制作 电商华为商城首页 ui还原度100% 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码…

Docker日志管理

一、知识点介绍 1.ELK(Elasticserach、Logstash、Kibana) 前面笔记有 2.什么是 Filebeat Filebeat 是 ELK 组件的新成员&#xff0c; 也是 Beat 成员之一。基于 Go 语言开发&#xff0c;无任何依赖并且比 Logstash 更加轻量&#xff0c;不会带来过高的资源占用&#xff0c; …

django常用的组合搜索组件

文章目录 django常用的组合搜索组件快速使用配置信息1. 视图函数2. 前端模板3. css样式 代码实现 django常用的组合搜索组件 在项目开发中&#xff0c;如果有大量数据就要用到组合搜索&#xff0c;通过组合搜索对大块内容进行分类筛选。 快速使用 三步走&#xff1a;&#xf…

刷题记录第110天-分割等和数组

解题思路&#xff1a; 问题可转化为&#xff0c;用给定数组能否装满一个容量为数组总和一半的背包(targetsum/2)&#xff0c;即一个0-1背包问题。 0-1背包问题的关键在于数组的定义和状态转移方程以及价值的定义。dp[i][j]表示在[0…i]个物品内&#xff0c;背包容量为j能装的最…

再升级!MoneyPrinterPlus集成GPT_SoVITS

最近有很多优秀的语音合成TTS工具&#xff0c;目前MoneyPrinterPlus已经集成了ChatTTS和fasterWhisper。应朋友们的要求&#xff0c;最近MoneyPrinterPlus也集成了GPT_SoVITS这个优秀的语音合成工具。 今天给大家详细讲解一下&#xff0c;如何在MoneyPrinterPlus中使用GPT_SoV…

机器学习速成第三集——无监督学习之降维(理论部分)!

目录 主成分分析&#xff08;PCA&#xff09; 独立成分分析&#xff08;ICA&#xff09; t分布随机邻近嵌入&#xff08;t-SNE&#xff09; 线性判别分析&#xff08;LDA&#xff09; 其他降维方法 应用场景 主成分分析&#xff08;PCA&#xff09;在处理大规模数据集时…

新能源汽车电机低频电磁场仿真应用

一、背景介绍 随着新能源汽车的普及&#xff0c;电机作为新能源汽车驱动系统的核心组成部分&#xff0c;其重要性不言而喻。电机使电能转化为机械能&#xff0c;通过传动系统将机械能传递到车轮&#xff0c;驱动汽车行驶。新能源汽车电机的发展经历了从初步探索到技术成熟的多…