刷题专栏(一):移除元素

简介: 刷题专栏(一):移除元素

前言

从今天来解算法题,从逻辑上突破一下。

先从简单开始,立志刷完一千道,欢迎大家关注我的《刷题专栏》,一起来刷题。

image.png

算法题:移除元素

《移除元素》这道题,本身从题目上来看,并不难。

题意:

从一个整数数组中,将元素等于val的元素移除。

这里其实也不是真正的删除掉,最后的结果是要将整数数组减去val元素存在总数后的前N位。

比如一个数组 [3,2,2,3],val提供的值是3。

然后我们应该返回整数2(因为数组中存在着两个3),整数数组最后应该是[2,2,n,n](这里的n可以是任何数字,因为最后验证时只会获取前2位数组元素,此时保证其中不包含val值3即可)。

思路:

主要是有一个空间复杂度必须满足O(1),这就说明了不能再暴力无脑循环了。

这道题最后要得到一个int整数值,还有数组中的元素变动。

一开始想到可能需要排序之类的算法,后来发现想多了。

只需要将所有的不符合val值的元素往前提即可,其中可以通过总数来作下标。

代码展示

我们来看一下具体代码:

public static void main(String[] args) {
    Solution solution = new Solution();
    System.out.println(solution.removeElement(new int[]{3,2,2,3}, 3));
}
public int removeElement(int[] nums, int val) {
    int count = 0;
    for (int i = 0; i < nums.length; i++) {
        if (nums[i] != val) {
            nums[count] = nums[i];
            count++;
        }
    }
    System.out.println(Arrays.toString(nums));
    return count;
}


这是我的执行结果,顺利做完题挺好。

image.png

总结

总结一下,这道题的主要考点在于其对引用数据类型的了解,和对空间复杂度的了解。

只要搞清数组的元素替换就可以了。

目录
相关文章
|
6月前
|
算法
27. 移除元素 Leetcode经典面试题
27. 移除元素 Leetcode经典面试题
37 1
|
1月前
【LeetCode-每日一题】移除元素
【LeetCode-每日一题】移除元素
31 0
|
5月前
|
算法
【数据结构与算法 刷题系列】移除链表元素
【数据结构与算法 刷题系列】移除链表元素
每日一练Day05:寻找多数元素
每日一练Day05:寻找多数元素
|
算法
LeetCode150道面试经典题-移除元素(简单)
给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度
59 0
|
6月前
|
算法
六六力扣刷题数组之移除元素
六六力扣刷题数组之移除元素
49 0
LeetCode刷题Day02——数组(元素删除、移动)
双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。 定义快慢指针 • 快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组 • 慢指针:指向更新新数组下标的位置 即快指针不断往后找合适的元素,找到后在慢指针所在位置更新该元素。
|
11月前
|
算法
【LeetCode刷题日志】27.移除元素
【LeetCode刷题日志】27.移除元素
|
算法
代码随想录训练营Day1:二分查找与移除元素
代码随想录训练营Day1:二分查找与移除元素
44 0