Skip to content

Commit d25d339

Browse files
重新添加leetcode题目文件
1 parent a321e68 commit d25d339

12 files changed

+780
-229
lines changed

.idea/workspace.xml

Lines changed: 232 additions & 229 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/HammingDistance.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
//package leetcode;
2+
3+
import org.junit.Test;
4+
5+
/**
6+
* @author zhangyu
7+
* @version V1.0
8+
* @ClassName: HammingDistance
9+
* @Description: TOTO
10+
* @date 2018/11/28 20:30
11+
**/
12+
13+
14+
public class HammingDistance {
15+
@Test
16+
public void fun() {
17+
int x = 1;
18+
int y = 4;
19+
int distance = hammingDistance2(x, y);
20+
System.out.println(distance);
21+
}
22+
23+
private int hammingDistance2(int x, int y) {
24+
return Integer.bitCount(x^y);
25+
}
26+
27+
private int hammingDistance(int x, int y) {
28+
int res = 0;
29+
int max = -1;
30+
int min = -2;
31+
if (x >= y) {
32+
max = x;
33+
min = y;
34+
} else {
35+
max = y;
36+
min = x;
37+
}
38+
while (max!=min){
39+
max=max/2;
40+
res++;
41+
}
42+
return res;
43+
}
44+
}

src/HammingDistance2.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
//package leetcode;
2+
3+
import org.junit.Test;
4+
5+
/**
6+
* @author zhangyu
7+
* @version V1.0
8+
* @ClassName: HammingDistance
9+
* @Description: TOTO
10+
* @date 2018/11/28 20:30
11+
**/
12+
13+
14+
public class HammingDistance2 {
15+
@Test
16+
public void fun() {
17+
int x = 1;
18+
int y = 4;
19+
int distance = hammingDistance3(x, y);
20+
System.out.println(distance);
21+
}
22+
23+
private int hammingDistance3(int x, int y) {
24+
int c = x ^ y;
25+
int res = 0;
26+
while (c > 0) {
27+
res = res + (c & 1);
28+
c = c >> 1;
29+
}
30+
return res;
31+
}
32+
33+
/*private int hammingDistance2(int x, int y) {
34+
return Integer.bitCount(x ^ y);
35+
}*/
36+
}

src/MergeArray.java

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
//package leetcode;
2+
3+
import org.junit.Test;
4+
import java.util.Arrays;
5+
6+
/**
7+
* @author zhangyu
8+
* @version V1.0
9+
* @ClassName: MergeArray
10+
* @Description: TOTO
11+
* @date 2018/11/21 20:08
12+
**/
13+
14+
public class MergeArray {
15+
@Test
16+
public void fun() {
17+
int[] arr1 = {1, 3, 5, 7};
18+
int[] arr2 = {2, 4, 6, 8};
19+
int[] newArr = merge(arr1, arr2);
20+
for (int number : newArr) {
21+
System.out.print(number + " ");
22+
}
23+
}
24+
25+
private int[] merge(int[] arr1, int[] arr2) {
26+
// 考虑临界值,当时题目不为空数组,所以不需要考虑这种情况
27+
if (arr1 == null || arr1.length == 0) {
28+
return arr2;
29+
}
30+
if (arr2 == null || arr2.length == 0) {
31+
return arr1;
32+
}
33+
int i = 0;
34+
int j = 0;
35+
int[] newArr = new int[arr1.length + arr2.length];
36+
int count = 0;
37+
while (i < arr1.length && j < arr2.length) {
38+
if (arr1[i] < arr2[j]) {
39+
newArr[count] = arr1[i];
40+
if(i+1!=arr1.length){}
41+
i++;
42+
count++;
43+
}else if (arr1[i] == arr2[j]) {
44+
newArr[count] = arr1[i];
45+
i++;
46+
j++;
47+
count++;
48+
}else{
49+
newArr[count] = arr2[j];
50+
j++;
51+
count++;
52+
}
53+
// 当arr1的指针已经到了末尾,直接把arr2后面的数组添加到数组中
54+
if (i == arr1.length) {
55+
for (int index = j; index < arr2.length; index++) {
56+
newArr[count] = arr2[index];
57+
count++;
58+
}
59+
}
60+
61+
// 当arr2的指针已经为到末尾,直接将arr1中的数组添加到数组当中
62+
if (j == arr2.length) {
63+
for (int index = i; index < arr1.length; index++) {
64+
newArr[count] = arr1[index];
65+
count++;
66+
}
67+
}
68+
}
69+
return Arrays.copyOfRange(newArr, 0, count);
70+
}
71+
}

src/MergeArray2.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
//package leetcode;
2+
3+
import org.junit.Test;
4+
import java.util.Set;
5+
import java.util.TreeSet;
6+
7+
/**
8+
* @author zhangyu
9+
* @version V1.0
10+
* @ClassName: MergeArray2
11+
* @Description: TOTO
12+
* @date 2018/11/21 20:41
13+
**/
14+
15+
public class MergeArray2 {
16+
@Test
17+
public void fun() {
18+
int[] arr1 = {1, 2, 3};
19+
int[] arr2 = {-1,2,3, 4, 5, 6, 7};
20+
int[] newArr = merge(arr1, arr2);
21+
for (int number : newArr) {
22+
System.out.print(number + " ");
23+
}
24+
}
25+
// 计算机数组合并之后的新数组
26+
private int[] merge(int[] arr1, int[] arr2) {
27+
if (arr1 == null || arr1.length == 0) {
28+
return arr2;
29+
}
30+
if (arr2 == null || arr2.length == 0) {
31+
return arr1;
32+
}
33+
Set<Integer> set = new TreeSet();
34+
for (int arrNnum1 : arr1) {
35+
set.add(arrNnum1);
36+
}
37+
for (int arrNum2 : arr2) {
38+
set.add(arrNum2);
39+
}
40+
int[] newArr = new int[set.size()];
41+
int count = 0;
42+
for (int number : set) {
43+
newArr[count] = number;
44+
count++;
45+
}
46+
return newArr;
47+
}
48+
}

src/PlusOne.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// package leetcode;
2+
3+
import org.junit.Test;
4+
5+
import java.util.Arrays;
6+
7+
/**
8+
* @author zhangyu
9+
* @version V1.0
10+
* @ClassName: PlusOne
11+
* @Description: TOTO
12+
* @date 2018/11/26 11:24
13+
**/
14+
15+
16+
public class PlusOne {
17+
@Test
18+
public void fun() {
19+
int[] digits = {3, 2, 1, 4};
20+
int[] newArr = getPlusOne(digits);
21+
System.out.println(Arrays.toString(newArr));
22+
}
23+
24+
private int[] getPlusOne(int[] digits) {
25+
Arrays.sort(digits);
26+
int sum = 0;
27+
for (int i = digits.length - 1; i >= 0; i--) {
28+
sum = sum * 10 + digits[i];
29+
}
30+
sum = sum + 1;
31+
int length = getNumberLength(sum);
32+
int[] newArr = new int[length];
33+
int index = 0;
34+
while (sum != 0) {
35+
newArr[index] = sum % 10;
36+
sum = sum / 10;
37+
index++;
38+
}
39+
reverseArray(newArr);
40+
return newArr;
41+
}
42+
43+
private int getNumberLength(int num) {
44+
int length = 0;
45+
while (num != 0) {
46+
num = num / 10;
47+
length++;
48+
}
49+
return length;
50+
}
51+
private void reverseArray(int[] arr) {
52+
for (int i = 0; i < arr.length / 2; i++) {
53+
int temp = arr[i];
54+
arr[i] = arr[arr.length - 1 - i];
55+
arr[arr.length - 1 - i] = temp;
56+
}
57+
}
58+
}

src/PlusOne2.java

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// package leetcode;
2+
import org.junit.Test;
3+
4+
import java.util.Arrays;
5+
6+
/**
7+
* @author zhangyu
8+
* @version V1.0
9+
* @ClassName: PlusOne
10+
* @Description: TOTO
11+
* @date 2018/11/26 11:24
12+
**/
13+
14+
15+
public class PlusOne2 {
16+
@Test
17+
public void fun() {
18+
int[] digits = {3, 2, 1, 4};
19+
int[] newArr = getPlusOne(digits);
20+
System.out.println(Arrays.toString(newArr));
21+
}
22+
23+
private int[] getPlusOne(int[] digits) {
24+
int sum = 0;
25+
for (int i = 0; i <= digits.length-1; i++) {
26+
sum = sum * 10 + digits[i];
27+
}
28+
sum = sum + 1;
29+
int length = getNumberLength(sum);
30+
int[] newArr = new int[length];
31+
int index = 0;
32+
while (sum != 0) {
33+
newArr[index] = sum % 10;
34+
sum = sum / 10;
35+
index++;
36+
}
37+
reverseArray(newArr);
38+
return newArr;
39+
}
40+
41+
private int getNumberLength(int num) {
42+
int length = 0;
43+
while (num != 0) {
44+
num = num / 10;
45+
length++;
46+
}
47+
return length;
48+
}
49+
private void reverseArray(int[] arr) {
50+
for (int i = 0; i < arr.length / 2; i++) {
51+
int temp = arr[i];
52+
arr[i] = arr[arr.length - 1 - i];
53+
arr[arr.length - 1 - i] = temp;
54+
}
55+
}
56+
}

src/PlusOne3.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// package leetcode;
2+
3+
import org.junit.Test;
4+
5+
import java.util.Arrays;
6+
7+
/**
8+
* @author zhangyu
9+
* @version V1.0
10+
* @ClassName: PlusOne
11+
* @Description: TOTO
12+
* @date 2018/11/26 11:24
13+
**/
14+
15+
16+
public class PlusOne3 {
17+
@Test
18+
public void fun() {
19+
int[] digits = {8,9,9,9};
20+
int[] newArr = getPlusOne(digits);
21+
System.out.println(Arrays.toString(newArr));
22+
}
23+
24+
private int[] getPlusOne(int[] digits) {
25+
int flag = 0;
26+
for (int i = digits.length - 1; i >= 0; i--) {
27+
if (digits[i] == 9) {
28+
digits[i] = 0;
29+
flag = 1;
30+
} else {
31+
digits[i] = digits[i] + 1;
32+
flag=0;
33+
break;
34+
}
35+
}
36+
37+
if (flag == 1) {
38+
int[] newArr = new int[digits.length + 1];
39+
newArr[0] = 1;
40+
return newArr;
41+
}
42+
return digits;
43+
}
44+
}

0 commit comments

Comments
 (0)