【C++】去除数组中的某数且不使用额外空间
来源:互联网 发布:java经典编程题 编辑:程序博客网 时间:2024/05/16 04:53
题目: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 in place with constant memory.
The order of elements can be changed. It doesn’t matter what you leave beyond the new length.
Example:
Given input array nums = [3,2,2,3], val = 3
Your function should return length = 2, with the first two elements of nums being 2.
要求去除数组中的val且不使用额外空间,并且说明不仅要返回前n个数据还有使数组中前n个数据不含有val的。
思想:使用两个指针i,j分别指向首位下标。遍历原有的数组A,若A[i]==val,那么A[i]=A[j],–j,否则i++。
代码如下:
int removeElement(vector<int>& nums, int val) { if(nums.size()==0 || (nums.size()==1 && nums[0]==val)) return NULL; //cout<<"mark2"<<nums.size(); int temp,i=0,j=nums.size()-1; while(i<j){ if(nums[i]==val){ nums[i]=nums[j]; j--; cout<<"mark1!"<<endl; } else{ i++; } } if(i==j && nums[i]==val) --i; return i+1;}
最后数组中前i+1个数就是不包含val的数组了。
阅读全文
0 0
- 【C++】去除数组中的某数且不使用额外空间
- python实现不使用额外空间去除重复元素
- 【C++】判断一个数是不是回文数,不使用额外的空间
- 不使用额外空间来交换两个数
- 在不使用额外空间,交换两个数
- 去除字符串中的重复字符,算法不使用额外缓冲。如abbc->abc
- 不使用额外空间字符串去重
- 如何不使用任何额外空间实现两数相互交换
- 【刷题之路】不使用额外空间交换两个数
- python实现不使用额外的空间判断输入数字是否是回文数
- 【算法】不利用额外空间判断回文数
- 华为-删数-约瑟夫环问题-不利用额外空间
- 在不使用额外空间的前提下,将数组的偶数放到数组的奇数前面 | Python
- [leetcode] Palindrome Number(不使用额外空间)
- 不使用额外空间判断整形数字是否回文
- C 语言中快速排序数组,不额外占用内存空间
- 不使用额外变量和数组的插入排序
- C 不使用额外变量统计字符串长度(递归)
- 关于使用EasyUI动态添加标签的个人笔记-V1
- CS231n学习笔记--13. Generative Models
- 编译原理入门
- ThinkPHP3.2判断手机端访问并设置默认访问模块的方法
- 执行nginx -s reload报错
- 【C++】去除数组中的某数且不使用额外空间
- phpStudy for Linux (lnmp+lamp一键安装包)
- 数据结构之树
- JS----实用小知识-------对表格 增删 行操作
- TP3.2:上传预览+缩略图+水印实例
- android TableLayout和Fragment复用
- 上世纪九十年代,为克服英文操作系统的弊端,发明中文输入法的黄金时代。
- 深入 char * ,char ** ,char a[ ] ,char *a[] 内核
- 获取 Java 字符串中的数字