1.算法:整数反转
问题:如何将一个数123反向输出321,120反向输出21
可以运用取余,来求末尾,后对原数10取整就可以去掉末尾一个,从倒数第二个开始
第一步:为结果指赋初值
第二步:判断输入的数是否不为0,不为零才能继续执行
第三步:判断结果数是否超出最大范围Integer.MAX_VALUE和最小范围Integer.MIN_VALUE
第四步:取余得末尾,取整得去末整数
第五步:结果从末尾开始相乘再加,循环
class solution{
public int reverse(int x){
int rev = 0;
while(x!=0){
if(rev<Integer.MIN_VALUE||rev>Integer.MAX_VALUE){
return 0;}
int d = x%10;
x/=10;
rev = rev*10+d;}
return rev;}
}
2.数据库:第二高的薪水
问题:如何找出第二高?
如何建立临时表?
使用as,例如结果一个表s存所需要的第二薪水
那么salary as s
LIMIT作用?
OFFSET作用,为什么第二薪资这样用?
SELECT
(SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT 1 OFFSET 1) AS S;
第二种:
SELECT
IFNULL(
(SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT 1 OFFSET 1) ,
NULL) AS S;总结:算法:不知道怎么将它反序,想过取余,取整,但没有想到,取余做首位,后面循环依次排列
数据库不明白两次SELECT 以及LIMIT和OFFSET是为什么这样表示第二薪资