Skip to content

Commit dd02218

Browse files
refactor for format
1 parent ed300ca commit dd02218

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+523
-517
lines changed

src/main/java/com/fishercoder/solutions/_162.java

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,41 +20,43 @@ public class _162 {
2020
* or nums[right] > nums[right+1], then we could return right as the result
2121
*/
2222
public static int findPeakElement_Ologn(int[] nums) {
23-
24-
if(nums == null || nums.length == 0) return 0;
25-
int left = 0, right = nums.length-1;
26-
while(left+1 < right){
27-
int mid = left + (right-left)/2;
28-
if(nums[mid] < nums[mid+1]){
23+
24+
if (nums == null || nums.length == 0) return 0;
25+
int left = 0, right = nums.length - 1;
26+
while (left + 1 < right) {
27+
int mid = left + (right - left) / 2;
28+
if (nums[mid] < nums[mid + 1]) {
2929
left = mid;
3030
} else {
3131
right = mid;
3232
}
3333
}
34-
return (left == nums.length-1 || nums[left] > nums[left+1]) ? left : right;
35-
34+
return (left == nums.length - 1 || nums[left] > nums[left + 1]) ? left : right;
35+
3636
}
3737

38-
public static void main(String...strings){
38+
public static void main(String... strings) {
3939
// int[] nums = new int[]{1,2};
4040
// int[] nums = new int[]{1};
41-
int[] nums = new int[]{1,2,3,1};
41+
int[] nums = new int[]{1, 2, 3, 1};
4242
// System.out.println(findPeakElement(nums));
4343
System.out.println(findPeakElement_Ologn(nums));
4444
}
45-
46-
/**My original O(n) solution.*/
45+
46+
/**
47+
* My original O(n) solution.
48+
*/
4749
public static int findPeakElement(int[] nums) {
48-
if(nums == null || nums.length == 0) return 0;
50+
if (nums == null || nums.length == 0) return 0;
4951
int n = nums.length, result = 0;
50-
for(int i = 0; i < n; i++){
51-
if(i == 0 && n > 1 && nums[i] > nums[i+1]){
52+
for (int i = 0; i < n; i++) {
53+
if (i == 0 && n > 1 && nums[i] > nums[i + 1]) {
5254
result = i;
5355
break;
54-
} else if(i == n-1 && i > 0 && nums[i] > nums[i-1]){
56+
} else if (i == n - 1 && i > 0 && nums[i] > nums[i - 1]) {
5557
result = i;
5658
break;
57-
} else if(i > 0 && i < n-1 && nums[i] > nums[i-1] && nums[i] > nums[i+1]){
59+
} else if (i > 0 && i < n - 1 && nums[i] > nums[i - 1] && nums[i] > nums[i + 1]) {
5860
result = i;
5961
break;
6062
}

src/main/java/com/fishercoder/solutions/_164.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ public int maximumGap(int[] nums) {
3232
}
3333

3434

35-
3635
//http://www.programcreek.com/2014/03/leetcode-maximum-gap-java/
3736
class Bucket {
3837
int min = -1;
@@ -61,7 +60,7 @@ public int maximumGap_from_programcreek_1(int[] nums) {
6160
buckets[i] = new Bucket();
6261
}
6362

64-
double interval = (double) nums.length/(maxNum - minNum);
63+
double interval = (double) nums.length / (maxNum - minNum);
6564
//distribute the array to different buckets
6665
for (int i = 0; i < nums.length; i++) {
6766
int index = (int) ((nums[i] - minNum) * interval);
@@ -104,10 +103,10 @@ public int maximumGap_from_programcreek_2(int[] nums) {
104103
buckets[i] = new Bucket();
105104
}
106105

107-
double gap = (double) (maxNum - minNum)/(nums.length-1);
106+
double gap = (double) (maxNum - minNum) / (nums.length - 1);
108107
//distribute the array to different buckets
109108
for (int i = 0; i < nums.length; i++) {
110-
int index = (int) ((nums[i] - minNum)/gap);
109+
int index = (int) ((nums[i] - minNum) / gap);
111110
if (buckets[index].min == -1) {
112111
buckets[index].min = nums[i];
113112
buckets[index].max = nums[i];

src/main/java/com/fishercoder/solutions/_165.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,35 +16,35 @@ public static int compareVersion(String version1, String version2) {
1616
String[] v1s = version1.split("\\.");//escaping it is very important! Otherwise, it's not going to work as expected!
1717
String[] v2s = version2.split("\\.");
1818
int len = (v1s.length < v2s.length) ? v2s.length : v1s.length;
19-
for(int i = 0; i < len; i++){
20-
if(v1s.length == i){
21-
while(i < len){
22-
if(Integer.parseInt(v2s[i]) > 0) return -1;
19+
for (int i = 0; i < len; i++) {
20+
if (v1s.length == i) {
21+
while (i < len) {
22+
if (Integer.parseInt(v2s[i]) > 0) return -1;
2323
i++;
2424
}
25-
} else if(v2s.length == i){
26-
while(i < len){
27-
if(Integer.parseInt(v1s[i]) > 0) return 1;
25+
} else if (v2s.length == i) {
26+
while (i < len) {
27+
if (Integer.parseInt(v1s[i]) > 0) return 1;
2828
i++;
2929
}
3030
} else {
31-
if(Integer.parseInt(v1s[i]) > Integer.parseInt(v2s[i])) return 1;
32-
else if(Integer.parseInt(v2s[i]) > Integer.parseInt(v1s[i])) return -1;
31+
if (Integer.parseInt(v1s[i]) > Integer.parseInt(v2s[i])) return 1;
32+
else if (Integer.parseInt(v2s[i]) > Integer.parseInt(v1s[i])) return -1;
3333
}
3434
}
3535
return 0;
3636
}
37-
38-
public static void main(String...args){
37+
38+
public static void main(String... args) {
3939
// String version1 = "1.1";
4040
// String version2 = "1.2";//should return -1
41-
41+
4242
// String version1 = "1.0.1";
4343
// String version2 = "1";//should return 1
44-
44+
4545
String version1 = "1.0";
4646
String version2 = "1";//should return 0
47-
47+
4848
/**"1.0.1", "1"*/
4949
System.out.println(compareVersion(version1, version2));
5050
}

src/main/java/com/fishercoder/solutions/_166.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,24 @@ public class _166 {
2222
public String fractionToDecimal(int numerator, int denominator) {
2323
String sign = (numerator >= 0 && denominator >= 0) || (numerator < 0 && denominator < 0) ? "" : "-";
2424
if (numerator == 0) return "0";
25-
long num = Math.abs((long)numerator);
26-
long deno = Math.abs((long)denominator);
25+
long num = Math.abs((long) numerator);
26+
long deno = Math.abs((long) denominator);
2727
StringBuilder stringBuilder = new StringBuilder();
2828
stringBuilder.append(sign);
29-
long integral = Math.abs(num/deno);
29+
long integral = Math.abs(num / deno);
3030
stringBuilder.append(integral);
31-
if (numerator%denominator == 0) {
31+
if (numerator % denominator == 0) {
3232
return stringBuilder.toString();
3333
} else {
3434
stringBuilder.append(".");
3535
}
36-
long remainder = num%deno;
36+
long remainder = num % deno;
3737

3838
Map<Long, Integer> map = new HashMap<>();
3939
while (!map.containsKey(remainder)) {
4040
map.put(remainder, stringBuilder.length());
41-
long n = remainder*10/deno;
42-
remainder = remainder*10%deno;
41+
long n = remainder * 10 / deno;
42+
remainder = remainder * 10 % deno;
4343
if (remainder != 0 || (remainder == 0 && !map.containsKey(remainder))) {
4444
stringBuilder.append(n);
4545
}

src/main/java/com/fishercoder/solutions/_168.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@ public class _168 {
1717
public String convertToTitle_accepted_more_beautiful(int n) {
1818
/**Get the right most digit first, move to the left, e.g. when n = 28, we get 'B' first, then we get 'A'.*/
1919
StringBuilder sb = new StringBuilder();
20-
while(n != 0){
21-
int temp = (n-1)%26;
22-
sb.append((char)(temp+65));
23-
n = (n-1)/26;
20+
while (n != 0) {
21+
int temp = (n - 1) % 26;
22+
sb.append((char) (temp + 65));
23+
n = (n - 1) / 26;
2424
}
2525
return sb.reverse().toString();
26-
26+
2727
}
28-
29-
public static void main(String...strings){
28+
29+
public static void main(String... strings) {
3030
_168 test = new _168();
3131
// int n = 28899;
3232
// int n = 1;
@@ -51,13 +51,13 @@ public String convertToTitle_accepted(int n) {
5151
/**'Z' is the corner case, so we'll have to special case handling specially, also, we'll have to do (n-1)/26,
5252
* only when this is not equal to 1, we'll continue.*/
5353
StringBuilder sb = new StringBuilder();
54-
while(n != 0){
55-
int temp = n%26;
56-
if(temp == 0) sb.append("Z");
57-
else sb.append((char)(temp+64));
58-
n = (n-1)/26;
54+
while (n != 0) {
55+
int temp = n % 26;
56+
if (temp == 0) sb.append("Z");
57+
else sb.append((char) (temp + 64));
58+
n = (n - 1) / 26;
5959
}
6060
return sb.reverse().toString();
6161
}
62-
62+
6363
}

src/main/java/com/fishercoder/solutions/_169.java

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,59 +12,59 @@
1212
1313
*/
1414
public class _169 {
15-
16-
public int majorityElement_bit_manipulation(int[] nums){
15+
16+
public int majorityElement_bit_manipulation(int[] nums) {
1717
int[] bit = new int[32];//because an integer is 32 bits, so we use an array of 32 long
18-
for(int num : nums){
19-
for(int i = 0; i < 32; i++){
20-
if((num >> (31-i) & 1) == 1) bit[i]++;//this is to compute each number's ones frequency
18+
for (int num : nums) {
19+
for (int i = 0; i < 32; i++) {
20+
if ((num >> (31 - i) & 1) == 1) bit[i]++;//this is to compute each number's ones frequency
2121
}
2222
}
2323
int res = 0;
2424
//this below for loop is to construct the majority element: since every bit of this element would have appeared more than n/2 times
25-
for(int i = 0; i < 32; i++){
26-
bit[i] = bit[i] > nums.length/2 ? 1 : 0;//we get rid of those that bits that are not part of the majority number
27-
res += bit[i]*(1 << (31-i));
25+
for (int i = 0; i < 32; i++) {
26+
bit[i] = bit[i] > nums.length / 2 ? 1 : 0;//we get rid of those that bits that are not part of the majority number
27+
res += bit[i] * (1 << (31 - i));
2828
}
2929
return res;
3030
}
31-
31+
3232
//saw a really clever solution on Discuss, though it didn't use bit manipulatoin
3333
//this is actually applying a famous algorithm called Moore Voting algorithm: http://www.cs.utexas.edu/~moore/best-ideas/mjrty/example.html
34-
public int majorityElement_moore_voting_algorithm(int[] nums){
34+
public int majorityElement_moore_voting_algorithm(int[] nums) {
3535
int count = 1, majority = nums[0];
36-
for(int i = 1; i < nums.length; i++){
37-
if(count == 0){
36+
for (int i = 1; i < nums.length; i++) {
37+
if (count == 0) {
3838
count++;
3939
majority = nums[i];
40-
} else if(nums[i] == majority){
40+
} else if (nums[i] == majority) {
4141
count++;
4242
} else count--;
4343
}
4444
return majority;
4545
}
46-
47-
public static void main(String...strings){
48-
int[] nums = new int[]{1,2,3,4,2,3,2,2,4,2};
46+
47+
public static void main(String... strings) {
48+
int[] nums = new int[]{1, 2, 3, 4, 2, 3, 2, 2, 4, 2};
4949
_169 test = new _169();
5050
System.out.println(test.majorityElement_bit_manipulation(nums));
5151
}
52-
52+
5353
//my natural idea is to either compute the frequency of each unique number or sort it and return the median, I can hardly think of
5454
//how bit manipulation could come into play for this question
5555
//this is O(n) time.
5656
public int majorityElement_compute_frequency(int[] nums) {
5757
Map<Integer, Integer> map = new HashMap();
58-
for(int i : nums){
58+
for (int i : nums) {
5959
map.put(i, map.getOrDefault(i, 0) + 1);
60-
if(map.get(i) > nums.length/2) return i;
60+
if (map.get(i) > nums.length / 2) return i;
6161
}
6262
return -1;
6363
}
64-
64+
6565
//This is O(nlogn) time.
6666
public int majorityElement_sort(int[] nums) {
6767
Arrays.sort(nums);
68-
return nums[nums.length/2];
68+
return nums[nums.length / 2];
6969
}
7070
}

src/main/java/com/fishercoder/solutions/_17.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,24 @@ public class _17 {
2121

2222
public List<String> letterCombinations(String digits) {
2323
List<String> result = new ArrayList();
24-
if(digits.length() == 0) return result;
24+
if (digits.length() == 0) return result;
2525

2626
String[] digits2Letters = new String[]{"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
2727

2828
result.add("");//this line is important, otherwise result is empty and Java will default it to an empty String
29-
for(int i = 0; i < digits.length(); i++){
30-
result = combine(digits2Letters[digits.charAt(i)-'0'], result);
29+
for (int i = 0; i < digits.length(); i++) {
30+
result = combine(digits2Letters[digits.charAt(i) - '0'], result);
3131
}
3232

3333
return result;
3434
}
3535

36-
List<String> combine(String letters, List<String> result){
36+
List<String> combine(String letters, List<String> result) {
3737
List<String> newResult = new ArrayList();
3838

39-
for(int i = 0; i < letters.length(); i++){//the order of the two for loops doesn't matter, you could swap them and it still works.
40-
for(String str : result){
39+
for (int i = 0; i < letters.length(); i++) {
40+
//the order of the two for loops doesn't matter, you could swap them and it still works.
41+
for (String str : result) {
4142
newResult.add(str + letters.charAt(i));
4243
}
4344
}

src/main/java/com/fishercoder/solutions/_171.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ public class _171 {
1717
public int titleToNumber(String s) {
1818
char[] c = s.toCharArray();
1919
int result = 0;
20-
for(int i = s.length()-1; i >= 0; i--){
21-
result += (c[i]-64) * ((int) Math.pow(26, s.length()-i-1));//The ASCII value of A is 65
20+
for (int i = s.length() - 1; i >= 0; i--) {
21+
result += (c[i] - 64) * ((int) Math.pow(26, s.length() - i - 1));//The ASCII value of A is 65
2222
}
2323
return result;
2424
}
25-
25+
2626
}

src/main/java/com/fishercoder/solutions/_172.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public class _172 {
66

77
public int trailingZeroes(int n) {
88
int result = 0;
9-
while(n > 4){
9+
while (n > 4) {
1010
n /= 5;
1111
result += n;
1212
}

0 commit comments

Comments
 (0)