刷刷LeetCode题 记录一下过程
简单
题1
给定一副牌,每张牌上都写着一个整数。
此时,你需要选定一个数字 X
,使我们可以将整副牌按下述规则分成 1 组或更多组:
- 每组都有
X
张牌。 - 组内所有的牌上都写着相同的整数。
仅当你可选的 X >= 2
时返回 true
。
示例 1:
1 | 输入:[1,2,3,4,4,3,2,1] |
示例 2:
1 | 输入:[1,1,1,2,2,2,3,3] |
解:
这道题有些不好理解,但思路是拿到数组中重复数字的次数,他们存在最大公约数就可以组成1组或更多组
1 | // 取最大公约数的函数(30secondsofcode) |
总结:先拿到重复数字的次数组成的数组后取最大公约返回boolean,不太好理解的是gcd这个函数。
题2
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 :
1 | 输入: "Let's take LeetCode contest" |
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
解:
1 | function reverseWords(s) { |
习惯性使用forEach 这里可以使用map 更方便
1 | function reverseWords(s) { |
也可以将split换成match正则的方式匹配单词
1 | function reverseWords(s) { |
总结:其实就是使用了切割或整个匹配拿到每个单词进行翻转再转换为空格连接的字符串
中等
题1
给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如电话按键相同。注意 1 不对应任何字母。
示例:
1 | 输入:"23" |
说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
解
1 | var letterCombinations = function(digits) { |
首先要写好数字与字母的映射关系,两两循环嵌套组合最后返回