remove-element

package com.ytx.array;
/** 题目:remove-element
 *
 *     描述: 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.
 *
 * @author yuantian xin
 * 
 *  给定一个数组和一个值,删除该值的所有实例,并返回新的长度。元素的顺序可以被改变,也不关心最终的数组长度。
 * 
 *  双指针思想,一个快指针i,一个慢指针index
 */
public class Remove_element {
       
        public int removeElement(int[] A, int elem) {
             
             /* int len = A.length;
              if(len == 0) return 0;
              int index = 0;
              for(int i = 0; i < len; i++) {
                     if(A[i] != elem) {
                            A[index++] = A[i];
                     }
              }
            return index; */
              int len = A.length;
              for(int i=0;i<len;){
                   if(elem==A[i]){
                       A[i]=A[--len];//若相同则把最后一个位置元素覆盖过来,且重新检查覆盖过来的元素
                   }else{
                       ++i;
                   }
               }
               return len;
        }
       
       public static void main(String[] args) {
             
             int[] A={1,2,2,4,5,2,6,2,2,2,7};
             int elem = 2;
             int newlength = new Remove_element().removeElement(A, elem);
             for(int i = 0; i < newlength; i++) {
                    System.out.print(A[i] + " ");
             }
       }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值