1. 具体题目

给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例 1:  给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。

2. 思路分析

将数组中数值为 val 的元素赋值为当前数组尾部元素值:设置前后指针 left & right,left 遍历数组,遇到数值为 val 的元素就将其赋值为 right 所指的元素的值,当 left 与 right 相遇时循环结束。思路比较简单,但需要注意代码细节。

3. 代码

 public int removeElement(int[] nums, int val) {
int left = 0,;
int right = nums.length; //*注意right指针移动过程
while(left < right){
if(nums[left] == val){
nums[left] = nums[right - 1]; //**
right--; //赋值后left不变,需要再经历一次判断,防止交换过来的值也等于val
}else{
left++;
}
}
return right; //***
}

最新文章

  1. 小菜学习编程-Winform系列(初学者)
  2. 磁盘IO
  3. elasticsearch相关文章
  4. web框架思考
  5. JS页面打印,预览,设置,分页
  6. mysql 概念和逻辑架构
  7. [GIF] Shape Objects in GIF Loop Coder
  8. ubuntu学习笔记--不断更新中
  9. c++之 变量
  10. jsoup UnsupportedMimeTypeExceptio
  11. Java发送新浪微博的问题
  12. jupyter notebook添加虚拟环境
  13. jqgrid 单列排序和组合排序
  14. PAT甲题题解-1068. Find More Coins (30)-dp,01背包
  15. lumen 使用 dingo API 在 phpunit 中 404 的解决方法, 以及鉴权问题
  16. 83. Remove Duplicates from Sorted List + 82. Remove Duplicates from Sorted List II
  17. [POJ2356]Find a multiple 题解(鸽巢原理)
  18. HashCode的秘密
  19. Acm hust 1.25
  20. python接口自动化12-案例分析(csrfToken)【转载】

热门文章

  1. numpy的函数使用
  2. 2015 ACM-ICPC 亚洲区上海站 A - An Easy Physics Problem (计算几何)
  3. Android/IOS APP界面设计之尺寸规范
  4. docker使用entrypoint执行时报permission denied错误
  5. mysql中tinyint(1)与tinyint(2)的区别
  6. ansible了解
  7. bzoj4550 小奇的博弈
  8. 2018-2-13-win10-UWP-Hmac
  9. Zabbix搭建部署与概述(一)
  10. git安装和使用方法url