标签:ref 判断 contain com twosum solution 数字 class rev
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum
class Solution{
public int[] twoSum1(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] == target - nums[i]) {
return new int[]{i, j};
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
}
class Solution {
public int[] twoSum2(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++) {
int complement = target - nums[i];
if (map.containsKey(complement) && map.get(complement) != i) {
return new int[]{i, map.get(complement)};
}
}
throw new IllegalArgumentException("No two sum solution");
}
};
class Solution {
public int[] twoSum3(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement) && map.get(complement) != i) {
return new int[]{i, map.get(complement)};
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
};
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123 输出: 321
示例 2:
输入: -123 输出: -321
示例 3:
输入: 120 输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [?231, 231 ? 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-integer
231- 1 = 2147483647,- 231 = - 2147483648
在正数情况下
如果temp = ans * 10 + pop
溢出,则 ans >= INT_MAX/10
class Solution {
public int reverse(int x) {
int rev = 0;
while (x != 0) {
int pop = x % 10;
x /= 10;
if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0;
if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0;
rev = rev * 10 + pop;
}
return rev;
}
}
public class Solution {
public int reverse(int x){
int ans=0;
while(x!=0){
if((ans*10)/10!=ans){
ans=0;
break;
}
ans = ans*10+x%10;
x=x/10;
}
return ans;
}
}
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121 输出: true
进阶:
你能不将整数转为字符串来解决这个问题吗?
来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/palindrome-number
public class Solution {
public boolean isPalindrome(int x){
StringBuffer sb1 = new StringBuffer(String.valueOf(x));
String str1 = sb1.toString();
String str2 = sb1.reverse().toString();
return str1.equals(str2);
}
}
StringBuffer的equals是继承自object,只有同一个对象才是true
public class Solution {
public boolean isPalindrome(int x){
if(x<0)
return false;
int rem = 0,y=0;
int quo=x;
while(quo!=0){
rem = quo%10;
quo=quo/10;
y=y*10+rem;
}
return y==x;
}
}
标签:ref 判断 contain com twosum solution 数字 class rev
原文地址:https://www.cnblogs.com/aabyss/p/13260093.html