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;
    }
}
目录
相关文章
|
1月前
|
存储 缓存 安全
除了变量,final还能修饰哪些Java元素
在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
26 2
|
2月前
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
48 3
|
1月前
|
Java
那些与Java Set擦肩而过的重复元素,都经历了什么?
在Java的世界里,Set如同一位浪漫而坚定的恋人,只对独一无二的元素情有独钟。重复元素虽屡遭拒绝,但通过反思和成长,最终变得独特,赢得了Set的认可。示例代码展示了这一过程,揭示了成长与独特性的浪漫故事。
21 4
|
1月前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
1月前
|
存储 算法 Java
为什么Java Set如此“挑剔”,连重复元素都容不下?
在Java的集合框架中,Set是一个独特的接口,它严格要求元素不重复,适用于需要唯一性约束的场景。Set通过内部数据结构(如哈希表或红黑树)和算法(如哈希值和equals()方法)实现这一特性,自动过滤重复元素,简化处理逻辑。示例代码展示了Set如何自动忽略重复元素。
30 1
|
安全 Java
Day4-如何删除Java集合中的元素(安全与不安全的删除方式详解!)
在删除Java集合中的元素时有会出现安全删除和不安全删除,本案例以list集合为例,list集合的特点:元素有序、可以出现重复的元素。
Day4-如何删除Java集合中的元素(安全与不安全的删除方式详解!)
|
1天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
1天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。
|
1天前
|
安全 Java 编译器
深入理解Java中synchronized三种使用方式:助您写出线程安全的代码
`synchronized` 是 Java 中的关键字,用于实现线程同步,确保多个线程互斥访问共享资源。它通过内置的监视器锁机制,防止多个线程同时执行被 `synchronized` 修饰的方法或代码块。`synchronized` 可以修饰非静态方法、静态方法和代码块,分别锁定实例对象、类对象或指定的对象。其底层原理基于 JVM 的指令和对象的监视器,JDK 1.6 后引入了偏向锁、轻量级锁等优化措施,提高了性能。
12 3