1.统计位数为偶数的数字
题目:给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。
/*** @param {number[]} nums* @return {number}*/
var findNumbers = function(nums) {return nums.filter((i) => !(`${i}`.length % 2)).length;
};
2.将每个元素替换为右侧最大元素
题目:
给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。
完成所有替换操作后,请你返回这个数组。
思路:从右往左遍历,用一个变量记录当前位置右侧的数的最大值
/*** @param {number[]} arr* @return {number[]}*/
var replaceElements = function(arr) {const l = arr.length;const res = new Array(l);let max = -1;res[l - 1] = max;if (l < 2) return res;for (let i = l - 2; i >= 0; i--) {max = arr[i + 1] > max ? arr[i + 1] : max;res[i] = max;}return res;
};
3.和为零的N个唯一整数
题目:给你一个整数 n,请你返回 任意 一个由 n 个 各不相同 的整数组成的数组,并且这 n 个数相加和为 0 。
思路:第一个数为负数,第二个数为从1到N-1,累计求和即可,或者直接用数学公式计算也行
/*** @param {number} n* @return {number[]}*/
var sumZero = function(n) {const res = new Array(n);let v = 0;for (let i = 1; i < n; i++) {v += i;res[i] = i;}res[0] = -1 * v;return res;
};
/*** @param {number} n* @return {number[]}*/
var sumZero = function(n) {const res = new Array(n);res[0]=-1 * (n*(n-1))/2for (let i = 1; i < n; i++) {res[i] = i;}return res;
};
4.解码字母到整数映射
题目:
给你一个字符串 s,它由数字('0' - '9')和 '#' 组成。我们希望按下述规则将 s 映射为一些小写英文字符:
字符('a' - 'i')分别用('1' - '9')表示。
字符('j' - 'z')分别用('10#' - '26#')表示。
返回映射之后形成的新字符串。
题目数据保证映射始终唯一。
思路:观察可知:如果某个字符是#,那么它前面两个数字代表了一个数字;否则当前字符代表一个数字。因为#在数字后面,所以从后往前遍历,记录每一个数字,然后转换成字母
/*** @param {string} s* @return {string}*/
var freqAlphabets = function(s) {const l = s.length;let stack = [];for (let i = l - 1; i >= 0; i--) {if (s[i] == "#") {stack.unshift(s.slice(i - 2, i));i -= 2;} else {stack.unshift(s[i]);}}return stack.map((i) => {return String.fromCharCode(+i + 96);}).join("");
};
5.解压缩编码列表
题目:
给你一个以行程长度编码压缩的整数列表 nums 。
考虑每对相邻的两个元素 [freq, val] = [nums[2*i], nums[2*i+1]] (其中 i >= 0 ),每一对都表示解压后子列表中有 freq 个值为 val 的元素,你需要从左到右连接所有子列表以生成解压后的列表。
请你返回解压后的列表。
思路:依次拼接
/*** @param {number[]} nums* @return {number[]}*/
var decompressRLElist = function(nums) {const l = nums.length / 2;const res = [];for (let i = 0; i < l; i++) {res.push(...new Array(nums[2 * i]).fill(nums[2 * i + 1]));}return res;
};