LeetCode热题100(JavaScript)
创始人
2025-01-10 23:07:05
0

哈希

两数之和

暴力解法

/**  * @param {number[]} nums  * @param {number} target  * @return {number[]}  */ var twoSum = function(nums, target) {     for(let i =0;i

Map法

var twoSum = function(nums, target) {     const map = new Map()     for(let i=0;i

字母异味词分组

/**  * @param {string[]} strs  * @return {string[][]}  */ var groupAnagrams = function(strs) {     let map = new Map();          for (let i = 0; i < strs.length; i++) {           let word = strs[i];           // 使用数组的 sort 方法对字符串的字符进行排序,并将排序后的字符数组重新连接成字符串           let sorted_word = word.split('').sort().join('');              if (map.has(sorted_word)) {               map.get(sorted_word).push(word);           } else {               map.set(sorted_word, [word]);           }       }          // 将Map中的值(数组)转换为数组返回       return [...map.values()];   };

最长连续序列

var longestConsecutive = function(nums) {     if (nums.length === 0) return 0;          let set = new Set(nums);       let maxSize = 0;          for (let num of set) {           // 跳过非连续序列的起始数字(即那些前面有数字的数字)           if (!set.has(num - 1)) {               let currentNum = num;               let currentLength = 1;                  // 遍历连续序列               while (set.has(currentNum + 1)) {                   currentNum++;                   currentLength++;               }                  // 更新最大长度               maxSize = Math.max(maxSize, currentLength);           }       }          return maxSize;  };

双指针

移动零

解法1

先遍历数组,计算非零元素的数量。然后,在第二次遍历中,只将非零元素复制回数组的前部,并跳过0。

function moveZeroes(nums) {       let count = 0;        for (let num of nums) {           if (num !== 0) {               count++;           }       }       let writeIndex = 0;        for (let num of nums) {           if (num !== 0) {               nums[writeIndex++] = num;           }        }       // 填充剩余的0     for (let i = writeIndex; i < nums.length; i++) {           nums[i] = 0;       }      return nums }  

解法2

  1. 初始化两个指针,slow 和 fast,都指向数组的第一个元素。
  2. 遍历数组(fast 从头到尾),对于每个 nums[fast]
    • 如果 nums[fast] 不为 0,则交换 nums[slow] 和 nums[fast],并将 slow 向后移动一位(slow++)。
    • 如果 nums[fast] 为 0,则只移动 fast 指针。
  3. 遍历结束后,所有非零元素都已经被移动到了数组的前面,而后面的元素则自动成为了 0
var moveZeroes = function(nums) {     let slow=0     let fast = 0     for(fast;fast

盛最多水的容器

  1. 初始化左指针 left 为 0,右指针 right 为 height.length - 1
  2. 进入循环,当 left < right 时执行以下步骤:
    • 计算当前容器的面积 area = Math.min(height[left], height[right]) * (right - left)
    • 更新最大面积 maxArea(如果 area 大于 maxArea)。
    • 如果 height[left] < height[right],则 left++(移动左指针),否则 right--(移动右指针)。
  3. 退出循环后,maxArea 就是所求的最大面积。
var maxArea = function(height) {     let left = 0     let right = height.length-1     let max = 0     while(left h2) {               right--;           } else {               left++;           }      }     return max };

三数之和

相关内容

热门资讯

一分钟内幕!科乐吉林麻将系统发... 一分钟内幕!科乐吉林麻将系统发牌规律,福建大玩家确实真的是有挂,技巧教程(有挂ai代打);所有人都在...
一分钟揭秘!微扑克辅助软件(透... 一分钟揭秘!微扑克辅助软件(透视辅助)确实是有挂(2024已更新)(哔哩哔哩);1、用户打开应用后不...
五分钟发现!广东雀神麻雀怎么赢... 五分钟发现!广东雀神麻雀怎么赢,朋朋棋牌都是是真的有挂,高科技教程(有挂方法)1、广东雀神麻雀怎么赢...
每日必看!人皇大厅吗(透明挂)... 每日必看!人皇大厅吗(透明挂)好像存在有挂(2026已更新)(哔哩哔哩);人皇大厅吗辅助器中分为三种...
重大科普!新华棋牌有挂吗(透视... 重大科普!新华棋牌有挂吗(透视)一直是有挂(2021已更新)(哔哩哔哩)1、完成新华棋牌有挂吗的残局...
二分钟内幕!微信小程序途游辅助... 二分钟内幕!微信小程序途游辅助器,掌中乐游戏中心其实存在有挂,微扑克教程(有挂规律)二分钟内幕!微信...
科技揭秘!jj斗地主系统控牌吗... 科技揭秘!jj斗地主系统控牌吗(透视)本来真的是有挂(2025已更新)(哔哩哔哩)1、科技揭秘!jj...
1分钟普及!哈灵麻将攻略小,微... 1分钟普及!哈灵麻将攻略小,微信小程序十三张好像存在有挂,规律教程(有挂技巧)哈灵麻将攻略小是一种具...
9分钟教程!科乐麻将有挂吗,传... 9分钟教程!科乐麻将有挂吗,传送屋高防版辅助(总是存在有挂)1、完成传送屋高防版辅助透视辅助安装,帮...
每日必看教程!兴动游戏辅助器下... 每日必看教程!兴动游戏辅助器下载(辅助)真是真的有挂(2025已更新)(哔哩哔哩)1、打开软件启动之...