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

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

问题描述

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. 

 

解决思路

双指针,起始状态两个指针p和q指向首元素,指针p指向的位置表示在此之前的元素均为正常元素(不被移除的)。

如果p指向的元素为正常元素,则p和q均向前一步;否则,找到第一个q指向的正常元素作交换。

注意控制边界条件,防止指针越界。

 

程序

public class Solution {    public int removeElement(int[] nums, int val) {        if (nums == null || nums.length == 0) {            return 0;        }        int len = nums.length;        int p = 0, q = 0;        while (p < len && q < len) {            if (nums[p] != val) {                ++p;                ++q;                continue;            }            while (q < len && nums[q] == val) {                ++q;            }            if (q == len) {                break;            }            // swap q and p            int tmp = nums[p];            nums[p] = nums[q];            nums[q] = tmp;        }        return p;    }}

  

转载于:https://www.cnblogs.com/harrygogo/p/4672342.html

你可能感兴趣的文章
jQuery on(),live(),trigger()
查看>>
treegrid.bootstrap使用说明
查看>>
[Docker]Docker拉取,上传镜像到Harbor仓库
查看>>
导航,头部,CSS基础
查看>>
gzip
查看>>
转负二进制(个人模版)
查看>>
LintCode-Backpack
查看>>
查询数据库锁
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
面试时被问到的问题
查看>>
注解小结
查看>>
list control控件的一些操作
查看>>
判断字符串在字符串中
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
Xcode5和ObjC新特性
查看>>
Centos 7.0 安装Mono 3.4 和 Jexus 5.6
查看>>
CSS属性值currentColor
查看>>
Real-Time Rendering 笔记
查看>>
实验四2
查看>>