删除数组中等于某个key的所有元素

题目描述:

给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。

这道题目做暴力的想法就是,用一个指针从头到尾遍历,删除哪个元素就把后面的元素统一向前移动一个位置。但是这样的时间复杂度很大,可能要移动很多的元素。

这里利用快速排序中划分的一种思想:用两个指针,后一个指针做遍历用,前一个指针作为一个tag,表示这个tag之前的元素都满足要求

那么具体的代码:

int removeElement(vector<int> &arr, int elem)
{
	// write your code here
	int size = arr.size();
	if(size == 0)
	{
		return 0;
	}
	int pre = -1;
	for(int cur = 0; cur < size; ++cur)
	{
		if(arr[cur] != elem)
		{
			++pre;
			if(cur != pre)
			{
				swap(arr[pre], arr[cur]);
			}
		}//if
	}//for

	return pre + 1;
}

  

时间: 2024-08-10 21:29:09

删除数组中等于某个key的所有元素的相关文章

LeeCode 删除数组中某一特定值的元素,并返回新的数组长度

题目: Given an array and a value, remove all instances of that value in place and return the new length. The order of elements can be changed. It doesn't matter what you leave beyond the new length. C代码: int removeElement(int* nums, int numsSize, int v

【LeetCode-面试算法经典-Java实现】【027-Remove Element(删除数组中指定的元素)】

[027-Remove Element(删除数组中的元素)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given an array and a value, remove all instances of that value in place and return the new length. The order of elements can be changed. It doesn't matter what you leave beyond the

(实用篇)PHP中unset,array_splice删除数组中元素的区别

php中删除数组元素是非常的简单的,但有时删除数组需要对索引进行一些排序要求我们会使用到相关的函数,这里我们来介绍使用unset,array_splice删除数组中的元素区别吧 如果要在某个数组中删除一个元素,可以直接用的unset,但是数组的索引不会重排: <?php $arr = array('a','b','c','d'); unset($arr[1]); print_r($arr); ?> 结果是: Array ( [0] => a [2] => c [3] => d

PHP中unset,array_splice删除数组中元素的区别

php中删除数组元素是非常的简单的,但有时删除数组需要对索引进行一些排序要求我们会使用到相关的函数,这里我们来介绍使用unset,array_splice删除数组中的元素区别吧 如果要在某个数组中删除一个元素,可以直接用的unset,但是数组的索引不会重排: <?php $arr = array('a','b','c','d'); unset($arr[1]); print_r($arr); ?> 结果是: Array ( [0] => a [2] => c [3] => d

删除数组中某元素,返回含有剩余元素的数组

arr为删除前的数组,key为要删除的元素对象.//删除数组中某元素,返回含有剩余元素的数组------------------------------------function arrMove(arr, key){ var temp = []; for (var i=0; i<arr.length; i++) { if (arr[i] != key) { temp.push(arr[i]); } } return temp;}

Leecode刷题之旅-C语言/python-26.删除数组中的重复项

/* * @lc app=leetcode.cn id=26 lang=c * * [26] 删除排序数组中的重复项 * * https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/description/ * * algorithms * Easy (42.77%) * Total Accepted: 89.1K * Total Submissions: 208.1K * Testcase Example: '[

删除数组中某个元素

需求:已知一个数组,删除其中某个元素,其它向左移,最后一位补null值 分析: 1.找出要删除元素的下标,找个变量接收 2.此位置元素后面的元素依次向左移一位 3.补齐最后一位赋值null 4.输出新数组 /** * */ package com.cn.u4; /** * @author Administrator *删除数组中某个元素值 */ public class DelArray { public static void main(String[] args) { //定义数组 Stri

约瑟夫问题 算法很简单保证每隔人都能看懂用数组实现 利用循环删除数组中的元素

#include<iostream> using namespace std; const int size = 1000; void ArrDel() { int arr[size]; //循环结束标志,一直循环到数组中只剩下最后一个元素结束 int currentNum = size; int count = 0; for (int k = 0; k < size; k++) { arr[k] = k; } //currentNum==1表示数组中只剩下最后一个元素 是循环结束的标志

js如何删除数组中的第一个元素

js如何删除数组中的第一个元素:下面介绍一下如何利用javascript删除数组中的第一个元素,代码如下: var arr=["蚂蚁部落","青岛市南区",2,"antzone"]; console.log(arr); arr.shift(); console.log(arr); 以上代码可以删除数组中的第一个元素,具体可以参阅javascript的Array对象的shift()方法一章节. 原文地址是:http://www.softwhy.co