首页 > 其他分享 >Leecode27移除元素

Leecode27移除元素

时间:2024-10-12 19:18:33浏览次数:10  
标签:return val nums int 元素 移除 Leecode27

题目

Leecode27. 移除元素

给你一个数组 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

解题思路

方法一: 借助额外的空间。先把移除元素剩余的所有元素放到一个新的数组中,再将结果放回源数组nums. O(N)

方法二: 使用双指针移动。 O(N)

代码实现

方法一: 借助额外的空间

func removeElement(nums []int, val int) int {
    if len(nums) ==0 {
        return 0
    }
    var arr []int
    // 把结果放到新数组
    for i:=0;i<len(nums);i++{
        if nums[i] != val {
            arr = append(arr, nums[i])
        }
    }
    // 将元素放回nums
    for i:=0;i<len(arr);i++{
        nums[i] = arr[i]
    }
    return len(arr)

}

方法二: 使用双指针移动

func removeElement(nums []int, val int) int {
    if len(nums) ==0 {
        return 0
    }

    var l = 0
    var r = len(nums)-1
    for l<r{
    	// 将nums[l]移动到指向val的地方
        if nums[l] != val {
            l++
            continue
        }
        // 此时nums[l] == val, 再将nums[r]移动到指向值不为val的地方
        if nums[r] == val {
            r--
            continue
        }
        // 此时nums[l] == val 而且 nums[r] != val
        nums[l],nums[r] = nums[r],nums[l]
        // 一起移动
        l++
        r--
    }
    if l == r && nums[l] != val {
        return l+1
    }
    return l

}

标签:return,val,nums,int,元素,移除,Leecode27
From: https://blog.csdn.net/xsw164711368/article/details/142864414

相关文章

  • Python 列表专题:添加元素
    目录1.Python列表概述1.1什么是列表?1.2列表的基本操作2.添加元素的方法2.1使用 append() 方法2.1.1添加不同类型的元素2.2使用 extend() 方法2.2.1使用字符串扩展列表2.3使用 insert() 方法2.4使用 + 操作符2.5使用 * 操作符3.使用案例3.1......
  • Python 列表专题:访问元素
    目录一、Python列表基础1.1列表的定义1.2列表的特点二、访问列表元素2.1通过索引访问2.2列表切片2.3遍历列表2.4使用enumerate函数三、列表的常用操作3.1修改元素3.2添加元素3.3删除元素3.4检查元素是否在列表中四、列表的高级技巧4.1列表推导式4.2......
  • [CSS] 伪元素和伪类,::before 和 :before 区别
     标签:CSS特点伪类伪元素用途选择元素的状态或基于结构选择元素创建虚拟的内容,操作元素的某些部分语法使用单个冒号(......
  • CSS 隐藏元素的方法
    display:none;通过设置元素CSS的displays属性为none来使元素消失,该方法隐藏的元素不占据页面空间oapcity:0;oapcity属性的作用是控制元素的透明度,当值为0的时候该元素完全不可见,但仍然存在页面上,占据页面空间visibility:hidden;visibility属性旨在控制元素的可见性,设置为hid......
  • 前端Vue中如何将Div元素内容转换为图片?html2canvas库助你轻松实现!
    前端在Vue3中,如果你需要将一个div元素的内容转换成图片,可以使用一个高效且流行的库——html2canvas。这个库能够帮助你将DOM元素渲染为Canvas,并进一步将Canvas转换为图片,非常适合在Vue项目中使用。原文可查看在线演示地址:张苹果博客一,安装html2canvasnpminst......
  • 2024-10-11 自定义渲染之arco-design-vue table的columns的title ==》使用DOM插入子元
    嗯...不知我没找到arco对应tabletitle的自定义渲染的正确方式 但我已经找了1个小时了,既然没找到就自己插入吧业务场景如下: 给表头插入一个必填的符号*,就这么简单的需求。代码如下:constelements:any=document.querySelectorAll('.arco-table-th-title');elements.f......
  • c++map 查找元素和list查找元素速度对比
    在C++中,std::map和std::list是两种不同的容器类型,前者是基于红黑树实现的关联容器,后者是双向链表。如果你想比较这两种容器在查找元素上的速度,通常std::map会比std::list快得多。因为std::map的查找操作是平均常数时间复杂度,即O(logn),而std::list的查找操作是线性时间复杂度,即O(......
  • 代码随想录算法训练营day11|150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K
    学习资料:https://programmercarl.com/0150.逆波兰表达式求值.html#算法公开课栈、队列、堆学习记录:150.逆波兰表达式求值(中序表达式转换为后序表达式,用栈实现;遇到符号就从栈中取前两个元素进行运算,再放回去)点击查看代码fromoperatorimportadd,sub,muldefdiv(x,y):......
  • js-存在重复元素
    219.存在重复元素II给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i]==nums[j] 且 abs(i-j)<=k 。如果存在,返回 true ;否则,返回 false 。代码:第一次尝试:/** *@param{number[]}nums *@param......
  • 三个元素
    题目给定一个包含n个整数的列表 nums,请判断 nums 中是否存在三个元素a,b,c,使得 a+b+c=0?请你找出所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。例如:给定一个列表:[-1,0,1,2,-1,-4]返回结果:[(-1,-1,2),(-1,0,1)]给定一个列表:[1,2,......