今日也是早起打篮球的一天呢。昨天配服务器太难了。。。完全不懂自己干了啥。。。
1.Excel表格名称
class Solution {
public String convertToTitle(int columnNumber) {
String result = "";
while(columnNumber > 0){
int temp = columnNumber % 26;
String tempstr;
int flag;
if(temp == 0)
flag = 25;
else
flag = temp - 1;
tempstr = String.valueOf((char)('A' + flag));
result = tempstr.concat(result);
columnNumber -= (flag + 1);
columnNumber /= 26;
}
return result;
}
}
经验:本质就是一个进制问题,竟然花了好久的时间debug。。不仅String的方法不太熟而且进制算法部分错了好几回。。。
(1)进制本质是把index为0的尾数减掉然后除以进制,把所有数相当于右移一格。不减其实也行,int类型的除法会把小数抹掉的。
(2)String的concat方法是返回一个String,不是在String上修改的,不是StringBuilder这种可变的数据类型。
(3)这题不应该,de了好久浪费时间。
(4)用char的数组存一个表不知道会不会快一些。
2.多数元组
class Solution {
public int majorityElement(int[] nums) {
int count = 0;
int result = 0;
for(int i = 0; i < nums.length; i++){
if(count == 0){
result = nums[i];
count++;
}else
count += result == nums[i] ? 1 : -1;
}
return result;
}
}
经验:
(1)对换策略,由于大于半数,选择一换一最后剩下的一定是目标元素。
3.Excel列表序号
class Solution {
public int titleToNumber(String columnTitle) {
int reslut = 0;
for(int i = 0; i < columnTitle.length(); i++){
char temp = columnTitle.charAt(i);
reslut += temp - 'A' + 1;
if(i < columnTitle.length() - 1)
reslut *= 26;
}
return reslut;
}
}
经验:
(1)正向的伪26进制。
4.阶乘后的零
class Solution {
public int trailingZeroes(int n) {
int countfive = 0;
while(n > 0){
n /= 5;
countfive += n;
}
return countfive;
}
}
经验:
(1)水题,数论知识秒。
5.组合两张表
select FirstName, LastName, City, State
from Person Left join Address on Person.PersonId = Address.PersonId;
经验:
(1)评论区一堆删库的做法就离谱。