乘风破浪:LeetCode真题_027_Remove Element

一、前言

这次是从数组中找到一个元素,然后移除该元素的所有结果,并且返回长度。

二、Remove Element

2.1 问题

2.2 分析与解决

    这个题和上一题是非常相似的,只不过这次是从数组中找到给定的元素,并且删除该元素,同时返回剩余数组的长度,超过长度的元素不用管,存不存在都可以。于是我们想到了和上次一样的方法,用一个指针指向开始,一个指向结尾,开始的向后移动,如果遇到需要删除的元素,则用最后的元素替代,最后的指针向前移动,然后再次从修改的位置开始往后遍历,这样等到两个指针重合,我们就得到了想要的结果。

class Solution {
public int removeElement(int[] nums, int val) {
int start = 0,end = nums.length-1;
if(nums.length==0){
return 0;
}
while(start<end){
if(nums[start]==val){
nums[start] = nums[end];
end--;
}else{
start++;
}
}
if(nums[start]==val){
start--;
end--;
}
return end+1;
}
}

三、总结

    小的问题,细节上也很重要,比如空的数组等等,考虑问题的时候一定要全面,测试用例要多一点。

乘风破浪:LeetCode真题_027_Remove Element的更多相关文章

  1. 乘风破浪:LeetCode真题_034_Find First and Last Position of Element in Sorted Array

    乘风破浪:LeetCode真题_034_Find First and Last Position of Element in Sorted Array 一.前言 这次我们还是要改造二分搜索,但是想法却 ...

  2. 乘风破浪:LeetCode真题_020_Valid Parentheses

    乘风破浪:LeetCode真题_020_Valid Parentheses 一.前言 下面开始堆栈方面的问题了,堆栈的操作基本上有压栈,出栈,判断栈空等等,虽然很简单,但是非常有意义. 二.Valid ...

  3. 乘风破浪:LeetCode真题_010_Regular Expression Matching

    乘风破浪:LeetCode真题_010_Regular Expression Matching 一.前言 关于正则表达式我们使用得非常多,但是如果让我们自己写一个,却是有非常大的困难的,我们可能想到状 ...

  4. 乘风破浪:LeetCode真题_041_First Missing Positive

    乘风破浪:LeetCode真题_041_First Missing Positive 一.前言 这次的题目之所以说是难,其实还是在于对于某些空间和时间的限制. 二.First Missing Posi ...

  5. 乘风破浪:LeetCode真题_040_Combination Sum II

    乘风破浪:LeetCode真题_040_Combination Sum II 一.前言 这次和上次的区别是元素不能重复使用了,这也简单,每一次去掉使用过的元素即可. 二.Combination Sum ...

  6. 乘风破浪:LeetCode真题_039_Combination Sum

    乘风破浪:LeetCode真题_039_Combination Sum 一.前言     这一道题又是集合上面的问题,可以重复使用数字,来求得几个数之和等于目标. 二.Combination Sum ...

  7. 乘风破浪:LeetCode真题_038_Count and Say

    乘风破浪:LeetCode真题_038_Count and Say 一.前言     这一道题目,很类似于小学的问题,但是如果硬是要将输入和结果产生数值上的联系就会产生混乱了,因此我们要打破思维定势. ...

  8. 乘风破浪:LeetCode真题_037_Sudoku Solver

    乘风破浪:LeetCode真题_037_Sudoku Solver 一.前言 这次我们对于上次的模型做一个扩展并求解. 二.Sudoku Solver 2.1 问题 2.2 分析与解决     这道题 ...

  9. 乘风破浪:LeetCode真题_036_Valid Sudoku

    乘风破浪:LeetCode真题_036_Valid Sudoku 一.前言 有的时候对于一些基础知识的掌握,对我们是至关重要的,比如ASCII重要字符的表示,比如一些基本类型的长度. 二.Valid ...

随机推荐

  1. 第六章 对象作用域与servlet事件监听器

          作用域对象 Servlet上下文监听器 Servlet会话监听器 Servlet请求监听器     一:对象作用域 作用域对象 属性操作方法 作用域范围说明 ServletContext( ...

  2. Linux 卸载 openjdk

    1 卸载 openjdk sudo apt-get purge openjdk*

  3. linux下开启、关闭、重启mysql服务

    linux下开启.关闭.重启mysql服务命令 一. 启动1.使用 service 启动:service mysql start2.使用 mysqld 脚本启动:/etc/inint.d/mysql ...

  4. [NOI 2016]国王饮水记

    Description 题库链接 给出 \(n\) 个水杯,每个水杯装有不同高度的水 \(h_i\) ,每次可以指定任意多水杯用连通器连通后断开,问不超过 \(k\) 次操作之后 \(1\) 号水杯的 ...

  5. [转]分布式中Redis实现Session终结篇

    本文转自:http://www.cnblogs.com/yanweidie/p/4763556.html 上一篇使用Redis实现Session共享方式虽然可行,但是实际操作起来却很麻烦,现有代码已经 ...

  6. C# Windows程序窗口置前台的几种方法

    这个是从别的地方看来的,放我这里 第一种:SetForegroundWindow,这个方法时灵时不灵.有人说,在自己的程序里把自己的窗口之前一般就不灵,而置前其它程序的窗口就灵.我觉得这是有原因的:当 ...

  7. ADO.NET获取数据(DataSet)同时获取表的架构

    普通的ADO.NET获取DataSet的写法如下: using System.Configuration; using System.Data; using System.Data.SqlClient ...

  8. Java基础——关于接口和抽象类的几道练习题

    呃,一定要理解之后自己敲!!!这几道题,使我进一步了解了接口和抽象类. 1.设计一个商品类 字段: 商品名称,重量,价格,配件数量,配件制造厂商(是数组,因为可能有多个制造厂商) 要求: 有构造函数 ...

  9. 【CentOS7】CentOS 7 安装 MySQL

    转自:http://www.centoscn.com/mysql/2016/0315/6844.html 环境 CentOS 7.1 (64-bit system) MySQL 5.6.24 Cent ...

  10. IDEA中上传项目到GIt

    一.先创建一个git仓库 二.然后在右键项目pull 三.add 最后提交: 完成