删除元素(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 }
View Code
转载于:https://www.cnblogs.com/FJH1994/p/5022094.html
删除元素(LintCode)相关推荐
- Redis 笔记(04)— list类型(作为消息队列使用、在列表头部添加元素、尾部删除元素、查看列表长度、遍历指定列表区间元素、获取指定区间列表元素、阻塞式获取列表元素)
Redis 的列表是链表而不是数组.这意味着 list 的插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n). 当列表弹出了最后一个元素之后,该数据结构自动被删除, ...
- python list 删除元素
python笔记:删除列表元素和根据索引查找元素 </h1><div class="clear"></div><div class=&qu ...
- C++ 笔记(23)— STL vector 类(实例化 vector、末尾插入、指定位置插入、数组方式访问元素、指针方式访问元素、删除元素、大小与容量区别)
1. vector 特点 vector 是一个模板类,提供了动态数组的通用功能,具有如下特点: 在数组末尾添加元素所需的时间是固定的,即在末尾插入元素的所需时间不随数组大小而异,在末尾删除元素也如此: ...
- 如何在C ++中从容器中删除元素
How to remove elements from container is a common C++ interview question, so you can earn some brown ...
- 【廖雪峰python入门笔记】list删除元素_pop()
从list中删除元素 Paul同学刚来几天又要转走了,那么我们怎么把Paul 从现有的list中删除呢? 如果Paul同学排在最后一个,我们可以用list的pop()方法删除: L = ['Adam' ...
- python list 删除元素_Python的list循环遍历中,删除数据的正确方法
初学Python,遇到过这样的问题,在遍历list的时候,删除符合条件的数据,可是总是报异常,代码如下: num_list = [1, 2, 3, 4, 5]print(num_list)for i ...
- 顺序表-顺序表的基本操作(插入元素+删除元素)
顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 一.插入元素 分析: 在顺序 ...
- 容器删除元素后迭代器失效_使用迭代器遍历容器元素
迭代器为我们提供了统一的遍历容器的方式. 1.Iterator源码分析 public Iterator<E> iterator() {return new Itr(); }private ...
- jquery 移除border_jQuery - 删除元素
通过 jQuery,可以很容易地删除已有的 HTML 元素. 删除元素/内容 remove() - 删除被选元素(及其子元素) empty() - 从被选元素中删除子元素 jQuery remove( ...
最新文章
- oracle执行计划连接方式
- 如何选择容器注册表?这里给出九个选项
- 设计模式 — 行为型模式 — 策略模式
- Android SurfaceView的生命周期
- Oracle 欲放手 Java EE,谁能成为继任者?
- feachall php_集合:给 PHP 数组插上翅膀
- 【英语学习】【Level 08】U05 Better option L5 A picture is worth a thousand words
- 即时通讯安全问题大曝光
- 如何将pdf转换成txt破解版
- 苹果手机远程服务器桌面,如何用手机APP远程桌面管理Windows云服务器或电脑
- linux 查看、关闭、后台程序 【进程】
- 驻点、极值点与拐点(判断极值点与拐点的方法)
- C语言之for循环应用之断案篇----找凶手
- entity framework 新手入门篇(2)-entity framework基本的增删改查
- Python|城市公交线路名称获取
- 4本建模必读的书籍,每天学一点,获益匪浅
- Monty Hall Problem (三门问题)
- 万事开头难,开启博客之路
- 简单的微信聊天模拟(W-01)
- 讲给后台程序员看的前端系列教程(06)——HTML5标签(5)
热门文章
- OK6410裸机开发之LED灯
- MySQL笔记1:考察内链接、左连接、右连接。
- #ifdef __cplusplus extern “C” { #endif的作用!
- 二分查找算法的两种实现方式:非递归实现和递归实现
- 算法三:无重复字符的最长子串
- 汇编:键盘中断(int 9)
- Android_SQLite_升级框架
- linux文件名通配符:* ? [:digit:]数字 [:lower:]小写字母 [:upper:]大写字母
- 回文树(回文自动机) - URAL 1960 Palindromes and Super Abilities
- 开启虚拟化技术之旅---1什么是虚拟化?