Leetcode 03——移除元素(Java)

简介: Leetcode03 ——移除元素

前言

与数组的爱恨情仇,还有很长一段时间。

在Java中,它是一种引用数据类型,底层又类似与数据结构中顺序表。


数组看似很重要,但确实很重要~

一篇好文,今天带你干掉数组中不要的元素!


题目及解析

图片.png


题目的目标已经告诉你了,让你返回整改后数组的长度。比如原数组{1,1,2,2},val =2;

我们要把原数组中等于2的“全干掉”,新的数组长度就是2了,然后返回就是我们需要的答案。

注意:这里的全干掉我打了引号,我会在下面的解读第③点中为你解释~


这里我们解读一下说明里面的内容:


①int 一个变量len 接收我们通过代码执行之后的新数组长度(比如上面的例子中返回了2)


②for循环,从0开始打印到我们返回的长度-1为止,就是得到的新数组


③最重要的来了:我们不需要把原来的数组中数值等于val的元素全部干掉,可以把这些元素弄到后面,比如{2,1,1,2};val = 2;  可以把数组改成{1,1,2,2},只要返回的长度是2不再是4就行。(我的解法中没有使用到此条,仅作为一个思路)



这题相对比较简单,比如我们很容易想到把原数组的长度给一个变量,然后一个for循环,遍历一下数组看哪个元素等于val,难的地方就是找到等于val的元素了,接下来怎么操作


代码

classSolution {
publicintremoveElement(int[] nums, intval) {
intn=nums.length;
if(n==0){
return0;
            }
for(inti=0;i<n;++i){
if(nums[i] ==val){   //找到数组元素等于val的了,进入for循环for(intj=i;j<n-1;++j){ //这里就要从我们找到的位置开始nums[j] =nums[j+1];  //后面的数组元素覆盖前面的数组元素                    }
--i;   
--n;  //数组长度减1                }
            }
returnn;
    }
}
目录
相关文章
|
2月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
8月前
|
机器学习/深度学习 存储 算法
【LeetCode 热题100】347:前 K 个高频元素(详细解析)(Go语言版)
这篇文章详细解析了力扣热题 347——前 K 个高频元素的三种解法:哈希表+小顶堆、哈希表+快速排序和哈希表+桶排序。每种方法都附有清晰的思路讲解和 Go 语言代码实现。小顶堆方法时间复杂度为 O(n log k),适合处理大规模数据;快速排序方法时间复杂度为 O(n log n),适用于数据量较小的场景;桶排序方法在特定条件下能达到线性时间复杂度 O(n)。文章通过对比分析,帮助读者根据实际需求选择最优解法,并提供了完整的代码示例,是一篇非常实用的算法学习资料。
500 90
|
存储 缓存 安全
除了变量,final还能修饰哪些Java元素
在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
169 3
|
Java
那些与Java Set擦肩而过的重复元素,都经历了什么?
在Java的世界里,Set如同一位浪漫而坚定的恋人,只对独一无二的元素情有独钟。重复元素虽屡遭拒绝,但通过反思和成长,最终变得独特,赢得了Set的认可。示例代码展示了这一过程,揭示了成长与独特性的浪漫故事。
96 4
|
存储 算法 Java
为什么Java Set如此“挑剔”,连重复元素都容不下?
在Java的集合框架中,Set是一个独特的接口,它严格要求元素不重复,适用于需要唯一性约束的场景。Set通过内部数据结构(如哈希表或红黑树)和算法(如哈希值和equals()方法)实现这一特性,自动过滤重复元素,简化处理逻辑。示例代码展示了Set如何自动忽略重复元素。
111 1
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
797 113
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
168 3
|
安全 Java 流计算
【小家java】Java中集合List、Set、Map删除元素的方法大总结(避免ConcurrentModificationException异常)(下)
【小家java】Java中集合List、Set、Map删除元素的方法大总结(避免ConcurrentModificationException异常)(下)
【小家java】Java中集合List、Set、Map删除元素的方法大总结(避免ConcurrentModificationException异常)(下)
|
算法 Java 索引
【小家java】Java中集合List、Set、Map删除元素的方法大总结(避免ConcurrentModificationException异常)(上)
【小家java】Java中集合List、Set、Map删除元素的方法大总结(避免ConcurrentModificationException异常)(上)
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
187 1