LeetCode Day1
2020, Jan 17
Now I’m trying to find a job in the USA, although I have already worked for many years my friends suggest to me that I should do some LeetCode.So Let’s do it!
LeetCode 1 Two Sum
https://leetcode.com/problems/two-sum/
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap();
for (int i = 0; i < nums.length; i++) {
if (map.containsKey(target - nums[i])) {
return new int[]{map.get(target - nums[i]), i};
} else {
map.put(nums[i], i);
}
}
throw new IllegalArgumentException("Not match nums");
}
Never try this below, you will be an error if your input is “[3,2,4] 6”, because 6 = 3 + 3, you should just use one number only once.
//Wrong
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i], i);
}
for (int i = 0; i < nums.length; i++) {
if (map.containsKey(target - nums[i])) {
return new int[]{map.get(target - nums[i]), i};
}
}
return new int[]{};
}
}
LeetCode 7 Reverse Integer
https://leetcode.com/problems/reverse-integer/
public int reverse(int x) {
long result = 0;
while (x != 0) {
result = result * 10 + x % 10;
x /= 10;
}
if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) {
return 0;
} else {
return (int) (result);
}
}
Another Solution is using the string reverse:
//Version String
public int reverse(int x) {
String a = Integer.toString(x);
int b = 1;
if (a.charAt(0) == '-') {
a = a.substring(1);
b = -1;
}
char[] chars = a.toCharArray();
char[] results = new char[chars.length];
for (int i = chars.length - 1; i >= 0; i--) {
results[chars.length - 1 - i] = chars[i];
}
long longNum = Long.valueOf(new String(results));
if (longNum > Integer.MAX_VALUE || longNum < Integer.MIN_VALUE) {
return 0;
}
return (int) (b * longNum);
}
LeetCode 13 Roman to Integer
https://leetcode.com/problems/roman-to-integer/
The simplest solution is just listing all the roman number in a HashMap.
public int romanToInt(String s) {
Map<String, Integer> map = new HashMap<>();
map.put("I", 1);
map.put("IV", 4);
map.put("V", 5);
map.put("IX", 9);
map.put("X", 10);
map.put("XL", 40);
map.put("L", 50);
map.put("XC", 90);
map.put("C", 100);
map.put("CD", 400);
map.put("D", 500);
map.put("CM", 900);
map.put("M", 1000);
int result = 0;
for (int i = 0; i < s.length(); i++) {
if (i + 2 <= s.length() && map.containsKey(s.substring(i, i + 2))) {
result += map.get(s.substring(i, i + 2));
i++;
} else {
result += map.get(s.substring(i, i + 1));
}
}
return result;
}