这周主要刷题,看了node视频教程,教程比较老,4.*的版本,先搭了本地服务,demo等,后续在补充。这里主要记录下刷题记录。
分糖果1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* 排排坐,分糖果。 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。 给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。 然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。 重复上述过程(每次都比上一次多给出一颗糖果,当到达队伍终点后再次从队伍起点开始),直到我们分完所有的糖果。注意,就算我们手中的剩下糖果数不够(不比前一次发出的糖果多),这些糖果也会全部发给当前的小朋友。 返回一个长度为 num_people、元素之和为 candies 的数组,以表示糖果的最终分发情况(即 ans[i] 表示第 i 个小朋友分到的糖果数)。 */
leetcode 地址
和为**的连续整数序列 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 /* 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1: 输入:target = 9 输出:[[2,3,4],[4,5]] 示例 2: 输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],[7,8]] 限制: 1 <= target <= 10^5 来源:力扣(LeetCode) */
leetcode 地址
回文数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /** * @param {number} x * @return {boolean} */ var isPalindrome = function(x) { if(x == 0){ return true; }else{ if( x < 0 || x % 10 == 0){ return false; } } let new_num = 0 ; while(x > new_num){ new_num = x % 10 + new_num * 10; x = Math.floor(x / 10); } return x == new_num || x == Math.floor(new_num / 10);//偶数位 || 奇数位 };
原理是将原数对半分,右侧的倒叙后是否和左侧的相等
有效的括号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 /* 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: 输入: "([)]" 输出: false 示例 5: 输入: "{[]}" 输出: true 通过次数219,379提交次数534,304 来源:力扣(LeetCode) */
leetcode 地址
在评论区看到最简单的做法是直接替换1 2 3 4 5 6 7 8 9 python: class Solution: def isValid(self, s): while '{}' in s or '()' in s or '[]' in s: s = s.replace('{}', '') s = s.replace('[]', '') s = s.replace('()', '') return s == ''
最长公共前缀
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /* 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。 来源:力扣(LeetCode) */
leetcode 地址
数组合并
1 2 3 4 5 6 7 8 9 10 11 12 13 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。 初始化 A 和 B 的元素数量分别为 m 和 n。 示例: 输入: A = [1,2,3,0,0,0], m = 3 B = [2,5,6], n = 3 输出: [1,2,2,3,5,6] 来源:力扣(LeetCode)
leetcode 地址
数值倒叙
不要用转字符串的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //将输入的整数倒置,假使是最大32位数 var reverse = function(x) { var tempX = String(Math.abs(x)); var len = tempX.length; var res = ''; for(var i = len - 1 ; i >= 0 ; i --){ var char = tempX.charAt(i); if(!(res == '' && char == 0)){ res += ''+char; } } var resVal = res * (x > 0 ? 1 : -1); return (resVal < -Math.pow(2,31) || resVal > Math.pow(2,31) - 1 || isNaN(resVal)) ? 0 : resVal ; };