LeetCode~移除元素(简单)

移除元素(简单)

1. 题目描述

  • 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。
  • 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
  • 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例 1:

给定 nums = [3,2,2,3], val = 3,

函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。

你不需要考虑数组中超出新长度后面的元素。

示例 2:

给定 nums = [0,1,2,2,3,0,4,2], val = 2,

函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。

注意这五个元素可为任意顺序。

你不需要考虑数组中超出新长度后面的元素。

2. 个人解题思路

public static int  removeElement(int[] nums, int val){
    // 初始化指针
        int i = nums.length-1;
        // 遍历数组
        for (int j = nums.length - 1; j >= 0 ; j--) {
            // 判断是否等于val
            if (nums[j] == val){
                // 交换位置
                nums[i] = nums[i] + nums[j] - (nums[j] = nums[i]);
                // 指针前移
                i--;
            }
        }
        return i+1;
}

:定义了一个指针指向数组中末尾元素,从后往前遍历该数组,判断有与目标符合的元素则与指针索引位置元素交换位置,指针前移一位,该方法可以保证数组数据的完整性

3. 官方解题参考

public static int  removeElement(int[] nums, int val){
    // 定义指针
    int ans = 0;
    // 遍历数组
    for(int num: nums) {
        // 判断是否不等于val
        if(num != val) {
            // 不等于则后面的元素替换到前面的位置中,等于则等待被替换,替换后指针后移一位
            nums[ans++] = num;
        }
    }
    // 返回有效长度
    return ans;
}

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum

原文地址:https://www.cnblogs.com/unrecognized/p/11478476.html

时间: 2024-10-06 15:29:02

LeetCode~移除元素(简单)的相关文章

每日一题之LeetCode移除元素 删除有序数组重复元素

这两道题若是不使用官方题解的双指针做法,就会涉及到浅复制,深复制的问题,可参考如下https://blog.csdn.net/qq_32907349/article/details/52190796 .其中,此题将要使用深复制,但这会违背题意中的不开辟新的内存空间. 1.移除元素class Solution:def removeElement(self, nums, val):i = 0for j in range(0,len(nums)): if (nums[j] != val): nums[

图解双指针 | LeetCode 27. 移除元素

题目描述 原题链接:LeetCode 27. 移除元素 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 元素的顺序可以改变.你不需要考虑数组中超出新长度后面的元素. 示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 的前两个元素均为 2. 你不需要考虑数组中超出新长度后面的元素

LeetCode#27 | Remove Element 移除元素

一.题目 Given an array and a value, remove all instances of that value in-place and return the new length. Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory. The order of element

Leecode刷题之旅-C语言/python-26.移除元素

/* * @lc app=leetcode.cn id=27 lang=c * * [27] 移除元素 * * https://leetcode-cn.com/problems/remove-element/description/ * * algorithms * Easy (53.46%) * Total Accepted: 39.5K * Total Submissions: 73.7K * Testcase Example: '[3,2,2,3]\n3' * * 给定一个数组 nums 

将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变。

2.将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变. 示例: 交换前链表的顺序             交换后链表的顺序 4→5→3→1→2   ==>  5→3→1→4→2 1 ==> 1                   (链表仅含一个元素) 2→1 ==>1→2 ==>         (链表为空) C/C++: 链表节点定义为: struct node { struct node *next; int value; };

jquery删除指定li元素简单介绍

jquery删除指定li元素简单介绍:本章节介绍一下如何利用jquery删除指定的li元素,虽然比较简单,但这也是比较常见的操作,可能很多初学者还是不够了解,下面就通过代码实例介绍一下如何实现此功能,代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.sof

鼠标移到元素上指针变为不可用状态

鼠标移到元素上指针变为不可用状态:鼠标的指针状态与很多种,分别代表着不同的含义,下面介绍一下如何实现当鼠标悬浮于一个元素的时候,鼠标指针会变味不可用状态,代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" />

原生javascript获取dom元素简单介绍

原生javascript获取dom元素简单介绍: 使用jQuery可以各种方式获取元素,比如id选择器,类选择器,元素选择器等等,非常的方便. 下面就介绍一下如何利用原生的js实现获取dom元素的功能. 一.通过id获取元素: 最方便的那就是使用document.getElementById()函数. 具体可以参阅document.getElementById()一章节. 二.通过标签获取元素: 使用document.getElementsByTagName()函数. 具体可以参阅documen

充分利用HTML标签元素 – 简单的xtyle前端框架

xtyle框架充分利用语义化标签来做美化样式,兼容多款主流浏览器,包括IE8. xtyle框架虽然没BS这么强大,但我觉得也很实用,体积不算很大,适用于企业网站.WordPress主题.个人网站.博客等方面的应用,当然手机端也是适用哦! 框架下载地址:xtyle 栅格系统(Layout) 栅格系统我想很多人是比较关注的,这个xtyle的栅格系统很简单,也很实用和易用,栅格Class由.gird1-.grid10来控制. 布局简单用法 一栏布局 直接使用class="gird1"即可.