首页 > 编程语言 >算法-移除元素

算法-移除元素

时间:2025-01-15 10:03:17浏览次数:3  
标签:返回 val nums int 元素 算法 移除

 力扣题目:27. 移除元素 - 力扣(LeetCode)

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。

假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:

  • 更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
  • 返回 k

用户评测:

评测机将使用以下代码测试您的解决方案:

int[] nums = [...]; // 输入数组
int val = ...; // 要移除的值
int[] expectedNums = [...]; // 长度正确的预期答案。
                            // 它以不等于 val 的值排序。

int k = removeElement(nums, val); // 调用你的实现

assert k == expectedNums.length;
sort(nums, 0, k); // 排序 nums 的前 k 个元素
for (int i = 0; i < actualLength; i++) {
    assert nums[i] == expectedNums[i];
}

如果所有的断言都通过,你的解决方案将会 通过

示例 1:

输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2,_,_]
解释:你的函数函数应该返回 k = 2, 并且 nums 中的前两个元素均为 2。
你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。

示例 2:

输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,4,0,3,_,_,_]
解释:你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。
注意这五个元素可以任意顺序返回。
你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。

提示:

  • 0 <= nums.length <= 100
  • 0 <= nums[i] <= 50
  • 0 <= val <= 100

java

class Solution {
    public int removeElement(int[] nums, int val) {
        int L=nums.length;
        int left=0;
        for(int right=0;right<L;right++)
        {
            //如果右边的指针不等于val,不删除
            if(nums[right]!=val)
            {
                nums[left]=nums[right];
                left++;
            }
        }
        return left;
        
    }
}

标签:返回,val,nums,int,元素,算法,移除
From: https://blog.csdn.net/silent702366/article/details/145153138

相关文章

  • 【轻松掌握数据结构与算法】字符串算法(String Algorithms)
    字符串算法概述字符串匹配算法是计算机科学中的一个重要领域,主要用于在文本中查找特定模式(子字符串)的出现位置。这些算法在文本编辑器、搜索引擎、生物信息学等领域有广泛的应用。暴力法(BruteForceMethod)暴力法是最直接的字符串匹配算法,它通过逐个字符比较来查找模式在文......
  • 算法面试准备 - 手撕系列第二期 - 交叉熵损失(Cross Entropy Loss)
    算法面试准备-手撕系列第二期-交叉熵损失(CrossEntropyLoss)目录算法面试准备-手撕系列第二期-交叉熵损失(CrossEntropyLoss)交叉熵原理图交叉熵损失实现代码-不同y_pre版本参考交叉熵原理图Softmax原理图交叉熵损失实现代码-不同y_pre版本......
  • 期望最大化算法:机器学习中的隐变量与参数估计的艺术
    引言在机器学习和统计学领域,许多实际问题涉及到含有隐变量的概率模型。例如,在图像识别中,图像的语义信息往往是隐变量,而我们能观测到的只是图像的像素值;在语音识别中,语音对应的文本内容是隐变量,观测数据则是语音信号。期望最大化(Expectation-Maximization,简称EM)算法作为一......
  • 拖拽去除元素
    <head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="X-UA-Compatible"content="ie=edge"><title&......
  • 通过一个算法的设计来了解栈的一些应用
    目录1.前言2.步骤3.代码实现4.测试5.运行结果6.一些思考7.一些应用示例1.前言掌握堆栈的基本原理掌握堆栈的存储结构掌握堆栈的进栈、出栈;判断栈空的实现方法掌握应用堆栈实现括号匹配的原理和实现方法;熟悉python语言编程熟练使用python语言实现堆栈的进栈Pus......
  • LeetCode:347.前K个高频元素
    LeetCode:347.前K个高频元素vartopKFrequent=function(nums,k){letmap=newMap();letarr=[...newSet(nums)]nums.forEach(item=>{if(map.has(item)){map.set(item,map.get(item)+1)}else{map.set(item,1)......
  • [需要复习的算法]算法目录
    1.十分基础1.算法1.枚举上链接!2.模拟上链接!3.分治上链接!4.贪心上链接!5.二分上链接!6.倍增上链接!7.排序上链接!比较基础的几种算法,多种算法依托在这几种思想上。要求:集合为一篇博客产出2.数据结构1.树 李老师的PDF2.图李老师的PDF3.栈 上链接!+李老师的PDF4......
  • 一个算法题目的探索
    首先提出一个简单的问题,之后在此基础上一步步进行拓展,整体上从易到难,逐渐深入。问题一给定\(n\)个区间\([l_i,r_i]\),选出至多\(2\)个两两不重叠的区间\([start_i,end_i]\),每个区间由\([l_x,r_y]\)组成(\(y\gex\)),最大化\(\sum(end_i-start_i)\)分析将\(n\)个区间......
  • 【优先算法】思还故里闾,欲归道无因 - 前缀和
    本篇博客给大家带来的是前缀和算法的知识点,也是一样通过OJ题理解,掌握,应用该算法.......
  • 令人惊艳的算法分享!
    惊艳的算法引言你是否曾想过,是什么让计算机能够如此快速而高效地处理信息?这背后恰恰是算法的功劳。作为计算机科学的基石,算法不仅是解决问题的工具,更是推动技术进步的动力。在这篇文章中,我们将探讨几种经典和新兴的算法,揭示它们是如何颠覆我们对计算的认识并激发创新的。......