
1. Excel 表列序号
给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。
例如:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入: columnTitle = "A"
输出: 1
示例 2:
输入: columnTitle = "AB"
输出: 28思路:就是一个 26进制 转 10进制的题目,我们从高位开始遍历. 将 A-Z 转变成 1-26. 然后遍历第二位时 ax26 + b 得新的数据
/**
* @param {string} columnTitle
* @return {number}
*/
var titleToNumber = function(columnTitle) {
if(!columnTitle) return 0
let result = 0
for(let i =0; i < columnTitle.length; i++) {
result = result * 26 + (columnTitle[i].charCodeAt() - 64)
}
return result
};
2. 多数元素
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入:nums = [3,2,3]
输出:3
示例 2:
输入:nums = [2,2,1,1,1,2,2]
输出:2大于一半的数,也就是所肯定只有一个这样的数,而且题目说了,给的数组都有这样的数,那就不用考虑没有的条件。
var majorityElement = function(nums) {
return nums.sort()[Math.floor(nums.length/2)];
};
3. Excel表列名称
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入:columnNumber = 1
输出:"A"
示例 2:
输入:columnNumber = 28
输出:"AB"
/**
* @param {number} columnNumber
* @return {string}
*/
var convertToTitle = function(n) {
if (n <= 0) return "";
let res = [];
while(n) {
let remain = n % 26 ? n % 26 : 26; // 类似 十进制的 521 进行不断取余
res.unshift(String.fromCharCode(remain + 64)); // 然后余数 + 64 获得字符(不是+65的原因是题目的A从1开始,要减去1)
n = Math.floor((n - remain) / 26); // 然后减去余数再除26,刚好除得尽,新的一位开始
}
return res.join("");
};