LeetCode Java day13
编写一个函数,不用临时变量,直接交换numbers = [a, b]
中a
与b
的值。
示例:
输入: numbers = [1,2]
输出: [2,1]
提示:
numbers.length == 2
-2147483647 <= numbers[i] <= 2147483647
这个题可谓是记忆犹深,虽然C语言基础拉跨,但是在刚学不久的时候,网课老师就有提到不使用临时变量进行交换。
class Solution {
public int[] swapNumbers(int[] numbers) {
numbers[0]=numbers[0]^ numbers[1];
numbers[1]=numbers[0]^ numbers[1];
numbers[0]=numbers[0]^ numbers[1];
return numbers;
}
}
class Solution {
public int[] swapNumbers(int[] numbers) {
numbers[0]=numbers[0]+ numbers[1];
numbers[1]=numbers[0]- numbers[1];
numbers[0]=numbers[0]- numbers[1];
return numbers;
}
}
递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。
示例1:
输入:A = 1, B = 10
输出:10
示例2:
输入:A = 3, B = 4
输出:12
提示:
- 保证乘法范围不会溢出
class Solution {
public int multiply(int A, int B) {
int max=Math.max(A,B);
int min=Math.min(A,B);
if(min==0){
return 0;
}
//max*min=max+max+~~~~~max(min个)
return multiply(min-1,max)+max;
}
}
反转 一个整数意味着倒置它的所有位。
- 例如,反转
2021
得到1202
。反转12300
得到321
,不保留前导零 。
给你一个整数 num
,反转 num
得到 reversed1
,接着反转 reversed1
得到 reversed2
。如果 reversed2
等于 num
,返回 true
;否则,返回 false
。
示例 1:
输入:num = 526
输出:true
解释:反转 num 得到 625 ,接着反转 625 得到 526 ,等于 num 。
示例 2:
输入:num = 1800
输出:false
解释:反转 num 得到 81 ,接着反转 81 得到 18 ,不等于 num 。
class Solution {
public boolean isSameAfterReversals(int num) {
int p=num;
int temp=0;
int retemp=0;
if(num%10==num){
return true;
}
while(num!=0){
temp=temp*10+num%10;
num/=10;
}
while(temp!=0){
retemp=retemp*10+temp%10;
temp/=10;
}
return retemp==p;
}
}
嘛。。就先告一段落了今天
(ง •_•)ง