
LeetCode
sulingliang
我们曾如此渴望命运的波澜,到最后才发现,世间最曼妙的风景竟是内心的淡定与从容!
我们曾如此期盼他人的肯定,到最后才知道,世界是自己的,与他人毫无关系。
展开
-
LeetCode 92. 反转链表 II
第一种const reverseBetween = (head, left, right) => { const dummyHead = new ListNode(-1); dummyHead.next = head; let prev = dummyHead; let pos = 1; while(pos < left) { prev = prev.next; pos++; } let cur = prev.next; while(po原创 2021-08-24 20:57:18 · 138 阅读 · 0 评论 -
Leetcode 202. 快乐数
公共方法const toSum = n => String(n).split('').reduce((prev, cur) => prev += Math.pow(+cur, 2),0);第一种方法: 用数组检测循环const isHappy = (n) => { const sumArr = []; if(n === 1) { return true; } while(true) { const res = toSum(n); if(res原创 2021-07-12 17:17:18 · 137 阅读 · 0 评论 -
LeetCode 49. 字母异位词分组
const groupAnagrams = (strs) => { const obj = {}; let count = 1; const res = []; for(let i = 0; i < strs.length; i++) { const cur = strs[i].split('').sort().join(''); if(obj[cur]){ res[obj[cur] - 1] = [...res[obj[cur] - 1], strs原创 2021-07-08 16:59:25 · 101 阅读 · 0 评论 -
LeetCode 447. 回旋镖的数量
const numberOfBoomerangs = (points) => { let res = 0; for(let i = 0; i < points.length; i++) { const obj = {}; for(let j = 0; j < points.length; j++) { if(j !== i) { if(obj[dis(points[i], points[j])]) { obj[dis(原创 2021-07-08 16:55:07 · 86 阅读 · 0 评论 -
LeetCode 191. 位1的个数
第一种方法const hammingWeight = (n) => { n = n.toString(2); return n.split('').filter(item => item === '1').length;};第二种方法const hammingWeight = (n) => { n = n.toString(2); return n.split('').reduce((prev, cur) => { if(cur === '1') {原创 2021-07-02 16:24:39 · 81 阅读 · 0 评论 -
LeetCode 18. 四数之和
const fourSum = (nums, target) => { const res = []; if(nums.length < 4) { return res; } nums.sort((a, b) => a - b) for(let i = 0; i < nums.length - 3; i++) { if(i > 0 && nums[i] === nums[i - 1]) { continue;原创 2021-07-01 16:55:05 · 98 阅读 · 0 评论 -
LeetCode 15. 三数之和
第一种方法:const threeSum = (nums) => { if(nums.length < 2) { return []; } nums.sort((a, b) => a - b); const res = []; for(let i = 0; i < nums.length - 2; i++) { if(nums[i] > 0) { break; } if(i >= 1 &&原创 2021-06-30 16:57:09 · 96 阅读 · 0 评论 -
LeetCode 345. 反转字符串中的元音字母
第一种方法const reverseVowels = (s) => { let vowels = s.replace(/[^AaEeIiOoUu]/g, ''); // 1)将非元音的字母过滤掉 let count = vowels.length - 1; let str = ''; for(let i = 0; i < s.length; i++) { // 2) 使用str变量来接收翻转后的结果 str += /[AaEeIiOoUu]/.test(s[i]) ?原创 2021-06-29 15:11:25 · 103 阅读 · 0 评论 -
LeetCode 242. 有效的字母异位词
字母异位词含义:两个字符串,每个字母出现的次数是一致的以下两种方法进行的前提是:字符串s和t的长度需一致第一种方法:const isAnagram = (s, t) => { const sLen = s.length; const tLen = t.length; if(sLen === tLen) { s = s.split('').sort(); t = t.split('').sort(); // 1)字符串转成数组并进行排序; for(let原创 2021-06-28 17:13:24 · 167 阅读 · 0 评论 -
LeetCode 125. 验证回文串
第一种方法const isPalindrome = (s) => { s = s.toLowerCase().match(/[a-z0-9]+/g, ''); if(!s) return true; s = s.join(''); let left = 0; let right = s.length - 1; while(left < right) { if(s[left] !== s[right]){ return false;原创 2021-06-28 16:08:18 · 70 阅读 · 0 评论 -
LeetCode 11 盛最多水的容器
双指针const maxArea = function(height) { let start = 0; let end = height.length - 1; let res = 0; while(start < end) { const area = Math.min(height[start], height[end]) * (end - start); res = Math.max(area, res); he原创 2021-06-25 17:02:46 · 78 阅读 · 0 评论 -
leetcode 88 合并两个有序数组
双指针const merge = (nums1, m, nums2, n) => { let p1 = 0; let p2 = 0; let res = []; while (p1 < m || p2 < n) { if(p1 === m) { res.push(nums2[p2++]); } else if(p2 === n) { res.push(nums1[p1++]);原创 2021-06-21 18:07:16 · 71 阅读 · 0 评论 -
leetcode 75颜色分类
计数统计const countSort = (arr) => { const obj = { 0:0, 1:0, 2:0 } arr.forEach(item => item < 3 && obj[item]++); return Object.keys(obj).reduce((prev, cur) => prev.concat(new Array(obj[cur]).fill(+cu原创 2021-06-17 14:18:25 · 146 阅读 · 0 评论