TwoSum這題就直接把數(shù)字和位置放進(jìn)Map里穴店,然后用TARGET減當(dāng)前的數(shù)燥翅,用結(jié)果去Map里找就行关噪。不算是好的解法鸟蟹。
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i< nums.length; i++) {
if (map.containsKey(target - nums[i])) {
result[0] = map.get(target - nums[i]);
result[1] = i;
}
map.put(nums[i], i);
}
return result;
}
}
數(shù)字回文這道題,之前是做過類似的使兔,拿鏈表測字符串回文的建钥,這次要做的是不依賴成字符串和鏈表來檢測數(shù)字的回文。也比較簡單虐沥。
class Solution {
public static boolean isPalindrome(int x) {
if (x < 0) {
return false;
}
if (x <10) {
return true;
}
int leftPointer = 0;
int rightPointer = 0;
int remainder = x;
while (remainder >= 10) {
remainder = remainder / 10;
rightPointer++;
}
while (leftPointer < rightPointer) {
int leftDigit = getLeftDigit(x, rightPointer, leftPointer);
int rightDigit = getRightDigit(x);
if (leftDigit != rightDigit) {
return false;
}
x = removeFirstAndLastDigit(x, rightPointer, leftPointer);
leftPointer++;
rightPointer--;
}
return true;
}
private static int removeFirstAndLastDigit(int x, int rightPointer, int leftPointer) {
return x % (int)Math.pow(10, rightPointer - leftPointer) / 10;
}
private static int getLeftDigit(int x, int rightPointer, int leftPointer) {
return x / (int)Math.pow(10, getCurrentLength(rightPointer, leftPointer));
}
private static int getRightDigit(int x) {
return x % 10;
}
private static int getCurrentLength(int right, int left) {
return right - left;
}
}