Given an array and a value, remove all instances of that value in place and return the new length.

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

看题看了半天,英文不太好啊,大致意思就是,删掉数组中和给定值相同的所有元素,并返回新的数组长度,新数组不要求和原数组顺序一样。


别人的代码:

class Solution {
public:
int removeElement(int A[], int n, int elem) {
int i,j;
for(int i=;i<n;i++)
{
if(A[i]==elem)
{
for(j=i;j<n-;j++)
A[j]=A[j+];
n--;
i--;
}
}
return n;
}
};

我的代码。。。。  先排序,然后分三种情况,要找的数在中间,在左边,或者在右边,确实够笨,没想到删除一个元素,直接左移覆盖就行了。

class Solution {
public:
void swap(int* A,int a,int b)
{
int temp=A[a];
A[a]=A[b];
A[b]=temp;
}
int removeElement(int* A, int n, int elem) {
int res=;
if(A==NULL)
return ;
sort(A,A+n);//排序
for(int i=;i<n;++i)
{
if(A[i]==elem)
++res;
}
if(res==n)
return ;
if(res==)
return n;

     if(A[]!=elem&&A[n-]!=elem)
{
int t=;
int tag=;
for(int i=;i<n;++i)
{
if(res>=t&&A[i]==elem&&A[n-t]!=elem){
tag=i;swap(A,i,n-t);++t;
}
}
return n-res;
}
else if(A[]==elem&&A[n-]!=elem)
{
int t=;
for(int i=;i<n;++i)
{
if(res>=t&&A[i]==elem&&A[n-t]!=elem){
swap(A,i,n-t);++t;
}
}
return n-res;
}
else
{
for(int i=;i<n;++i)
{
if(A[i]==elem) return n-res;
}
}
return n-res;
}
};

Remove Element(第一种方法参考别人)的更多相关文章

  1. Qt5.9一个简单的多线程实例(类QThread)(第一种方法)

    Qt开启多线程,主要用到类QThread.有两种方法,第一种用一个类继承QThread,然后重新改写虚函数run().当要开启新线程时,只需要实例该类,然后调用函数start(),就可以开启一条多线程 ...

  2. [moka同学笔记]yii2.0小物件的简单使用(第一种方法)

    这是第一种方法,还有另一种方法,其实都差不多. 1.在创建widgets\HelloWiget.php <?php /** * Created by PhpStorm. * User: Admi ...

  3. iOS 清理缓存功能实现第一种方法

    添加一个提示框效果导入第三方MBProgressHUD #import "MBProgressHUD+MJ.h" /** * 清理缓存第一种方法 */ -(void)clearCa ...

  4. jQuery中detach&&remove&&empty三种方法的区别

    jQuery中empty&&remove&&detach三种方法的区别 empty():移除指定元素内部的所有内容,但不包括它本身 remove():移除指定元素内部的 ...

  5. throws关键字_异常处理的第一种方式(交给别人处理)和try_catch_异常处理的第二种方式(自己处理)

    throws关键字:异常处理的第一种方式,交给别人处理 作用: 当方法内部抛出异常对象的时候,那么我们就必须处理这个异常对象 可以使用throws关键字处理异常对象, 会把异常对象声明抛出给方法的调用 ...

  6. [LeetCode] Remove Element (三种解法)

    Given an array and a value, remove all instances of that value in place and return the new length. T ...

  7. 线程开启的第一种方法:通过创建Thread的子类的对象的方式

    package cn.itcast.demo16.demo06.Thread;/** * @author newcityman * @date 2019/7/22 - 21:47 */public c ...

  8. Androidclient和server端数据交互的第一种方法

    网上有非常多样例来演示Android客户端和server端数据怎样实现交互只是这些样例大多比較繁杂,对于刚開始学习的人来说这是不利的.如今介绍几种代码简单.逻辑清晰的交互样例,本篇博客介绍第一种: 一 ...

  9. laravel框架——验证码(第一种方法)

    一.在框架根目录下下载图形验证码的组件 composer require gregwar/captcha=1.* 二.控制器代码 use Gregwar\Captcha\CaptchaBuilder; ...

随机推荐

  1. 单例模式及php实现

    单例模式: 单例模式(Singleton Pattern):单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法. 单例模式的要点有三个:一 ...

  2. thinkphp查询,3.X 5.0 亲试可行

    [php] view plain copy   print? 一.介绍 ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作,查询条件可以用于读取.更新和删除等操作,主要涉及到wher ...

  3. Java方法注释模板

    普通方法 /** * ${todo} * @author: SYJP * @version 创建时间:${date} */ 覆盖方法 /** * @Title: ${enclosing_method} ...

  4. vs code 格式化 美化 html js css 插件 Beautify

    安装 Beautify 插件 然后 F1 输入 Beautify file 回车即可

  5. java.lang.NoClassDefFoundError: org.springframework.beans.FatalBeanException

    在进行Spring和Hibernate整合的时候遇到了这个问题, 问题描述如下 问题原因?  Spring的Bean的XML配置文件存在错误 解决方法: 正确的配置XML文件,例如下面的代码 < ...

  6. js模拟支付宝发送短信验证码&&&&短信倒计时

    html <div class="pwdContent"> <div class="pwdBox"></div> <d ...

  7. 一、认识spring框架

    对于spring框架,作为Java开发人员肯定不陌生,大名鼎鼎,名声在外,但是对于spring框架没有进行过系统的学习,从今天开始学习并且记录一下spring框架的比较牛逼的特性. 一.spring简 ...

  8. python 3 廖雪峰博客笔记(二) python解释器

    python 解释器用于理解 python代码,存在多种python解释器 CPython 官方版本python解释器,用C语言开发,使用最广泛 IPython 基于CPython,在交互方式上有所增 ...

  9. mysql jdbc驱动与java 版本对应关系

    当使用某些密码套件时,Connector/J5.1需要JRE 1.8.x才能使用SSL/TLS连接到MySQL 5.6,5.7和8.0.

  10. Python 3安装体验篇(win10)

    一.下载 1.打开官网https://www.python.org/downloads/windows/,点击Python 3版本链接 2.点击win10 64位安装链接,即可下载Python安装 二 ...