Leetcode019--删除数组中指定的元素

一、原题



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. 


一、中文


给定一个数组和一个值,删除数组中与这个值相等的元素,并且返回与这个数组的新的长度。 



三、举例



  给定数组{1,2, 3,4,5,6,3,4}这样会删除数组中重复的3和4,最后返回的数值是6


四、思路



从左边找值为elem的元素的位置,j从右边找值不为elem的元素的位置,然后将j位置的数值移动到i位置。 



五、程序


将j位置的数值移动到i位置。 
package LeetCode19;

public class LeetCode020{
	public static void main(String args[]){
		int num[] = new int[]{1,2,3,4,3,6,7};
		rmRepeatNum(num, 3);
		
		int count = 0;
		for(int i = 0; i < num.length; i++){
			if(num[i] != -1){
				count++;
				System.out.print(num[i]+" ");
				
			}
		}
		System.out.println("\ncount = "+count);
	}
	
	/**
	 * 删除数组中删除指定的元素
	 * @param num
	 */
	public static void rmRepeatNum(int num[], int a){
		int i = 0, j = num.length - 1;
		while(i < j){
			if(num[i] != a){
				i++;
			}else if(num[i] == a && num[j] != a){
				num[i] = num[j];
				num[j] = -1;
				i++;
				j--;
			}else if(num[i] == a && num[j] == a){
				num[i] = -1;
				num[j] = -1;
				i++;
				j--;
			}
		}
		
		if(num[i] == a){
			num[i] = -1;		
		}

	}

}


已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页