# 题目：

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.

public class RemoveElement {

	static public int quchu(int[] a,int value){
int i=0,j=0;
for(i=0;i<a.length;i++){//遍历数组
if(a[i]==value)//如果a[i]等于value，跳过继续执行
continue;
a[j]=a[i];//如果不相等，赋值给a[j]
j++;//j表示数组中与value不相等的元素个数
}
return j;

}
public static void main(String[] args){
int[] a={1,2,3,3,4,5,3,6,3,7,3};
int length=0;
length=quchu(a,3);
System.out.println(length);
}

}


# 题目：

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example,
Given input array A = [1,1,2],

Your function should return length = 2, and A is now [1,2].

public class RemoveDuplicatesfromSortedArray {
public static int removeDuplicates(int A[]) {
if(A.length == 0) {
return 0;
}
int j = 0;
/*
* 去重的数组A[0]不变，
* 查看A[1]是不是等于A[0]，若等于，则继续查看A[2]是否等于A[0]，直到找到一个不相等的A[i]
* 因为A[0]已被赋值，所以将A[i]的值赋给A[++j]
* 将新找到的数组元素作为比较对象继续遍历数组，直到结束
* 最后去重后的数组长度是j+1（A[0]-A[j]共j+1个）
* */
for(int i = 1; i < A.length; i++) {
if(A[j] != A[i]) {
j++;//下标加一
A[j] = A[i];
}
}
return j + 1;
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int length=0;
int[] a={1,2,3,3,4,5,5,6,6,7,8,8,9};
length=removeDuplicates(a);
System.out.println(length);

}

}


# 题目：

What if duplicates are allowed at most twice?

For example,
Given sorted array A = [1,1,1,2,2,3],

Your function should return length = 5, and A is now [1,1,2,2,3].

public class RemoveDuplicatesfromSortedArrayII {
public static int removeDuplicates(int A[]) {
if(A.length == 0) {
return 0;
}
int j = 0;
int num=0;//重复次数
/*
* 去重的数组A[0]不变，
* 查看A[1]是不是等于A[0]，若等于，num自加1，此时num=1，满足条件。继续查看A[2]是否等于A[0]，若等于，则num=2，不满足                  *条件，之后所有重复的元素都被剔除。直到找到一个不相等的A[i]
* 因为A[0]已被赋值，所以将A[i]的值赋给A[++j]，这时将num清零，用于统计新的元素相等的个数
* 将新找到的数组元素作为比较对象继续遍历数组，直到结束
* 最后去重后的数组长度是j+1（A[0]-A[j]共j+1个）
* */
for(int i = 1; i < A.length; i++) {
if(A[j]==A[i]) {
num++;
if(num<2) {
j++;
A[j]=A[i];
}
}
else  {
j++;//下标加一
A[j] = A[i];
num=0;//清零，用于统计下一个元素的重复数
}
}
return j + 1;
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int length=0;
int[] a={1,2,3,3,3,4,5,5,5,6,6,6,7,8,8,9};
length=removeDuplicates(a);
System.out.println(length);

}

}


# 题目：

Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.

public class PlusOne {

public static int[] mytets(int[] a) {
int carry=1;//进位值，初始为1，表示加1操作
int temp;
int i;
for(i=a.length-1;i>=0;i--) {
temp=a[i]+carry;
carry=temp/10;//向下一位的进位值
a[i]=temp%10;//当前为的结果值
if(carry==0) {//无进位则退出
break;
}
}
if(carry==1) {//分析最后产生的进位，例如999的特殊情况
int[] result=new int[a.length+1];
System.arraycopy(a, 0, result, 1, result.length-1);

			result[0]=carry;
return result;
}
else {
return a;
}

}
public static void main(String[] args) {
int []a= {9,9,9,9,9};
int result[]=mytets(a);
for (int i = 0; i <result.length; i++) {
System.out.print(result[i]);
}

}

}


#### Leetcode题目解答汇总

2016-06-18 19:08:33

#### leetcode题目思路以及部分解答(完)

2014-09-07 19:40:10

#### LeetCode Largest Rectangle in Histogram

2015年06月22日 2.67MB 下载

#### leetcode全部题目答案

2016-12-03 15:35:07

#### leetcode-solution

2016年03月07日 1.34MB 下载

#### Leetcode 经典题目题解

2015-12-16 05:46:02

#### LeetCode题解汇总（C++ Java Python，含题目翻译）

2014-02-23 17:49:09

#### leetcode java解答答案

2015年12月20日 36KB 下载

#### leetcode题目解答报告（2）

2017-01-04 22:53:40

#### 【Leetcode】532. K-diff Pairs in an Array

2017-03-05 14:22:06

## 不良信息举报

leetcode题目解答报告（1）