博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lintcode-easy-Remove Element
阅读量:5065 次
发布时间:2019-06-12

本文共 1834 字,大约阅读时间需要 6 分钟。

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

The order of elements can be changed, and the elements after the new length don't matter.

 

Given an array [0,4,4,0,0,2,4,4]value=4

return 4 and front four elements of the array is [0,0,0,2]

 

可能是写的不够好,left最后对应的数可能是要删除的数,也可能不是,要检查一下。这种方法会比第二种方法快一点,因为是通过两个指针交换实现的。

第二种方法代码比较清晰,不需要最后检查,但是会稍微慢一点。

public class Solution {    /**      *@param A: A list of integers     *@param elem: An integer     *@return: The new length after remove     */    public int removeElement(int[] A, int elem) {        // write your code here                if(A == null)            return 0;        if(A.length == 0)            return 0;                int left = 0;        int right = A.length - 1;                while(true){            while(left < right && A[left] != elem)                left++;            while(left < right && A[right] == elem)                right--;                        if(left == right)                break;                        swap(A, left, right);        }                if(A[left] == elem)            return left;        else            return left + 1;    }        public void swap(int[] A, int i, int j){        int temp = A[i];        A[i] = A[j];        A[j] = temp;        return;    }}
public class Solution {    /**      *@param A: A list of integers     *@param elem: An integer     *@return: The new length after remove     */    public int removeElement(int[] A, int elem) {        // write your code here        if(A == null || A.length == 0)            return 0;                int tail = 0;        for(int i = 0; i < A.length; i++){            if(A[i] != elem){                A[tail++] = A[i];            }        }                return tail;    }}

 

转载于:https://www.cnblogs.com/goblinengineer/p/5246599.html

你可能感兴趣的文章
发送请求时params和data的区别
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
如何增强你的SharePoint 团队网站首页
查看>>
FZU 1914 Funny Positive Sequence(线性算法)
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
MySQL服务读取参数文件my.cnf的规律研究探索
查看>>
java string(转)
查看>>
__all__有趣的属性
查看>>
写博客
查看>>
利用循环播放dataurl的视频来防止锁屏:NoSleep.js
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
ios封装静态库技巧两则
查看>>
Educational Codeforces Round 46 (Rated for Div. 2)
查看>>
Abstract Factory Pattern
查看>>
C# 实现Bresenham算法(vs2010)
查看>>
基于iSCSI的SQL Server 2012群集测试(一)--SQL群集安装
查看>>