27. Remove Element

Easy

Given an array nums and a value val, 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 by modifying the input array in-place with O(1) extra memory.

The order of elements can be changed. It doesn't matter what you leave beyond the new length.

Example 1:

Given nums = [3,2,2,3], val = 3,

Your function should return length = 2, with the first two elements of nums being 2.

It doesn't matter what you leave beyond the returned length.

Example 2:

Given nums = [0,1,2,2,3,0,4,2], val = 2,

Your function should return length = 5, with the first five elements of nums containing 0, 1, 3, 0, and 4.

Note that the order of those five elements can be arbitrary.

It doesn't matter what values are set beyond the returned length.

Clarification:

Confused why the returned value is an integer but your answer is an array?

Note that the input array is passed in by reference, which means modification to the input array will be known to the caller as well.

Internally you can think of this:

// nums is passed in by reference. (i.e., without making a copy)
int len = removeElement(nums, val); // any modification to nums in your function would be known by the caller.
// using the length returned by your function, it prints the first len elements.
for (int i = 0; i < len; i++) {
    print(nums[i]);
}
package leetcode.easy;

public class RemoveElement {
@org.junit.Test
public void test() {
int[] nums11 = { 3, 2, 2, 3 };
int[] nums12 = { 0, 1, 2, 2, 3, 0, 4, 2 };
int[] nums21 = { 3, 2, 2, 3 };
int[] nums22 = { 0, 1, 2, 2, 3, 0, 4, 2 };
int val1 = 3;
int val2 = 2;
System.out.println(removeElement1(nums11, val1));
System.out.println(removeElement1(nums12, val2));
System.out.println(removeElement2(nums21, val1));
System.out.println(removeElement2(nums22, val2));
} public int removeElement1(int[] nums, int val) {
int i = 0;
for (int j = 0; j < nums.length; j++) {
if (nums[j] != val) {
nums[i] = nums[j];
i++;
}
}
return i;
} public int removeElement2(int[] nums, int val) {
int i = 0;
int n = nums.length;
while (i < n) {
if (nums[i] == val) {
nums[i] = nums[n - 1];
// reduce array size by one
n--;
} else {
i++;
}
}
return n;
}
}

最新文章

  1. 指定URL,计算文件大小
  2. javascript进击(八)JSON
  3. hdu 5087 Revenge of LIS II
  4. Axure自动幻灯片制作
  5. 逛园子,看到个练习题,小试了一把(淘宝ued的两道小题)
  6. docker 实战---使用oracle xe作为开发数据库(六)
  7. javascript——touch事件介绍与实例演示
  8. Linux进程管理工具Supervisor
  9. js中创建对象
  10. 从零搭建 ES 搜索服务(三)同义词搜索
  11. [视频]K8飞刀 HackerIE自动检测网站注入教程
  12. vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。
  13. Space Shooter 学习
  14. [PHP] B2B2C商品模块数据库设计
  15. Vue计算属性的用法
  16. git clone时RPC failed; curl 18 transfer closed with outstanding read data remaining
  17. POJ 1815 Friendship (Dinic 最小割)
  18. CentOS7--配置时间和日期
  19. ubunttu-sh: 1: pause: not found
  20. Web项目开发中用到的缓存技术

热门文章

  1. 服务器上 MySql 8.0.16创建远程连接账号、获取初始密码、修改密码、重启命令等
  2. JS中map、some、every、filter方法
  3. el-input maxlength 不限制长度
  4. Oracle-查看sql运行状况
  5. redis中对list类型某个元素的查找和删除
  6. vscode 输出面板字符编码问题
  7. Redis的下载、安装及启动
  8. 使用jQuery快速高效制作网页交互特效---使用jQuery操作DOM
  9. 树状数组例题-数星星,简单题easy,校门外的树2,清点人数
  10. 学到了武沛齐讲的Day13完 转义字符