移除元素(简单)

1. 题目描述

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

示例 1:

给定 nums = [3,2,2,3], val = 3,

函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。

你不需要考虑数组中超出新长度后面的元素。

示例 2:

给定 nums = [0,1,2,2,3,0,4,2], val = 2,

函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。

注意这五个元素可为任意顺序。

你不需要考虑数组中超出新长度后面的元素。

2. 个人解题思路

public static int  removeElement(int[] nums, int val){
// 初始化指针
int i = nums.length-1;
// 遍历数组
for (int j = nums.length - 1; j >= 0 ; j--) {
// 判断是否等于val
if (nums[j] == val){
// 交换位置
nums[i] = nums[i] + nums[j] - (nums[j] = nums[i]);
// 指针前移
i--;
}
}
return i+1;
}

:定义了一个指针指向数组中末尾元素,从后往前遍历该数组,判断有与目标符合的元素则与指针索引位置元素交换位置,指针前移一位,该方法可以保证数组数据的完整性

3. 官方解题参考

public static int  removeElement(int[] nums, int val){
// 定义指针
int ans = 0;
// 遍历数组
for(int num: nums) {
// 判断是否不等于val
if(num != val) {
// 不等于则后面的元素替换到前面的位置中,等于则等待被替换,替换后指针后移一位
nums[ans++] = num;
}
}
// 返回有效长度
return ans;
}

题目来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/two-sum

最新文章

  1. 12月4日PHPCMS模板
  2. <九>JDBC_获取插入记录的主键值
  3. Sql:多行合并一行以及多条数据取时间最早的那条
  4. Oracle一些基本操作
  5. (实用篇)php处理单文件、多文件上传代码分享
  6. jquery.cookie.js使用介绍
  7. iOS 分类思想(2)
  8. HDU 5934 Bomb 【图论缩点】(2016年中国大学生程序设计竞赛(杭州))
  9. 如何在 CentOS 7 上安装 Redis 服务器
  10. iOS应用开发:什么是ARC?
  11. 洛谷 P1896 互不侵犯King
  12. 协议系列之UDP协议
  13. PAT1027:Colors In Mars
  14. Linux之环境搭建(一)
  15. EffectiveC++ 第2章 构造/析构/赋值运算
  16. ionic 确认提示操作框
  17. Bad Hair Day POJ - 3250 (单调栈入门题)
  18. nginx+python+windows 开始_02
  19. 【Gym 100015B】Ball Painting(DP染色)
  20. mysql系列四、mySQL四舍五入函数用法总结

热门文章

  1. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:多线程队列操作
  2. 吴裕雄--天生自然 JAVA开发学习:抽象类
  3. Python语言学习前提:条件语句
  4. Vue框架:挂载点-过滤器-事件指令-表单指令
  5. 蓝桥杯练习Day 2
  6. C#面向对象---对象成员、方法加载、引用类库
  7. 《走出软件作坊》//TODO
  8. java 解析URL里的主域名及参数工具类
  9. linux进程(一)
  10. Java中Date类型详解