删除元素(LintCode)

删除元素

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

元素的顺序可以改变,并且对新的数组不会有影响。

样例

给出一个数组 [0,4,4,0,0,2,4,4],和值 4

返回 4 并且4个元素的新数组为[0,0,0,2]

思路就是把除删除元素外的元素移到最左边,r是最右端非被删除元素,可以在一开始就找到最右端非被删除元素。用i遍历数组,找到最左端被删除元素,把r所指元素赋到i位置即可。代码里我是先找最左端被删除元素,然后再找最右端非被删除元素。时间复杂度是相同的。

 1 public class Solution {
 2     /**
 3      *@param A: A list of integers
 4      *@param elem: An integer
 5      *@return: The new length after remove
 6      */
 7     public int removeElement(int[] A, int elem) {
 8         int r = A.length - 1;
 9         if(r < 0) return 0;
10         int i = 0;
11
12         while(r > i) {
13             if(A[i] == elem) {
14                 while(A[r] == elem && r > 0) r--;
15                 if(r > i) {
16                     A[i] = A[r];
17                     r--;
18                 }
19             }
20             i++;
21         }
22
23         if(A[r] == elem) r--;
24
25         return r + 1;
26     }
27 }

时间: 2025-01-01 21:56:17

删除元素(LintCode)的相关文章

lintcode 容易题:Remove Element 删除元素

题目: 删除元素 给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度. 元素的顺序可以改变,并且对新的数组不会有影响.  样例 给出一个数组 [0,4,4,0,0,2,4,4],和值 4 返回 4 并且4个元素的新数组为[0,0,0,2] 解题: Java程序: public class Solution { /** *@param A: A list of integers *@param elem: An integer *@return: The new length aft

集合遍历过程iterator, 添加删除元素报异常

list  set  遍历过程中添加或者删除元素,报异常. 使用iterator 也会报异常 ConcurrentModificationException remove只能用迭代器的remove,而不能用集合的remove方法,iterator的remove会维护索引的一致性 iterator it = list.iterator(); while(it.hasnext(0){ obj = it.next(); it.remove(); } 用java.util.concurrent中的类代替

1116 删除元素

题目来源:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1116Description输入一个递增有序的整型数组A有n个元素,删除下标为i的元素,使其仍保持连续有序.注意,有效下标从0开始. 定义如下两个函数分别实现删除元素操作和数组输出操作.void del(int a[], int n, int i);  /*删除数组a中下标为i的元素*/void PrintArr(int a[], int n); /*输出数组a的前n个元素*/ Inpu

【JS学习笔记】DOM操作应用-创建、插入和删除元素;文档碎片

一.创建.插入和删除元素 (1)创建DOM元素 createElement(标签名) 创建一个节点 appendChild(节点) 追加一个节点 例子:为ul插入li <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="htt

Python - 字典(dict)删除元素

字典(dict)删除元素, 可以选择两种方式, dict.pop(key)和del dict[key]. 代码 # -*- coding: utf-8 -*- def remove_key(d, key): r = dict(d) del r[key] return r x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0} x.pop(1) print x x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0} del x[1] print x x = {1: 2,

【 D3.js 入门系列 — 2.1 】 选择、插入、删除元素

1. select 和 selectAll 的区别 在 D3 中,选择元素的函数有两个:select 和 selectAll,它们的使用非常重要.先说明一下它们的区别: select 是选择所有指定元素的第一个 selectAll 是选择指定元素的全部(用于同时操作) 这两个函数返回的结果称为选择集. 来看一个具体的例子,现有如下代码: <html> <head> <meta charset="utf-8"> <title>select,

jQuery 删除元素

通过 jQuery,可以很容易地删除已有的 HTML 元素. 删除元素/内容 如需删除元素和内容,一般可使用以下两个 jQuery 方法: remove() - 删除被选元素(及其子元素) empty() - 从被选元素中删除子元素 jQuery remove() 方法 jQuery remove() 方法删除被选元素及其子元素. 实例 $("#div1").remove(); 尝试一下 » jQuery empty() 方法 jQuery empty() 方法删除被选元素的子元素.

java 集合遍历时删除元素

本文探讨集合在遍历时删除其中元素的一些注意事项,代码如下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 import java.util.ArrayList; import java.util.Iterator; import java

JQUERY添加、删除元素

一.jQuery - 添加元素 1.append() - 在被选元素内部的结尾插入指定内容 2.prepend() - 在被选元素内部的开头插入指定内容 3.after() - 在被选元素之后插入内容 4.before() - 在被选元素之前插入内容 添加单个元素 <script type="text/javascript" src="jquery-1.11.2.min.js"></script> <body> <p>