当前位置: 首页 > news >正文

[失业前端恶补算法]JavaScript leetcode刷题top100(一)

专栏声明:只求用最简单的,容易理解的方法通过,不求优化,不喜勿喷
今天更新五个 easy 难度题目:

两数之和

  • 题面
    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。
  • 知识点:
    哈希表
  • 思路
    遍历整个数组,对于每个值,如果 target - x 已经出现过,那么返回这组解,否则就把这个当前值存到哈希表中,使用 [ 值:下标 ] 的形式进行存储
  • 代码
var twoSum = function (nums, target) {let hash = {};for (var i = 0; i < nums.length; i++) {if(typeof hash[target - nums[i]] !== 'undefined'){return [hash[target - nums[i]],i];}hash[nums[i]] = i;}};

有效的括号

  • 题面
    给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
    有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    每个右括号都有一个对应的相同类型的左括号。
  • 知识点
  • 思路
    遇到左一半的括号就压入栈中,遇到右一半的括号就判定栈顶元素是不是匹配,匹配就抛出栈顶元素,根据根据栈中有没有剩余没有匹配的元素判定是不是匹配
  • 代码
var isValid = function (s) {let stack = [];for (var i = 0; i < s.length; i++) {if(s[i] == ')' && stack[stack.length-1] == '('){stack.pop();}else if(s[i] == '}' && stack[stack.length-1] == '{'){stack.pop();}else if(s[i] == ']' && stack[stack.length-1] == '['){stack.pop();}else{stack.push(s[i]);}}return stack.length == 0;
};

合并两个有序链表

  • 题面
    将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
  • 知识点
    链表操作
  • 思路
    新建一个链表作为返回需要,两个链表从头开始遍历,如果每次将两个链表当前值较大的一个放到新链表中,之后放入新链表的那一链表指向下一个值,直到一个链表全部遍历完成,之后将还没有操作完毕的链表链接在新链表的尾部。
  • 代码
var mergeTwoLists = function (list1, list2) {var a = new ListNode(0, null);b = a;while (list1 != null && list2 != null) {if (list1.val < list2.val) {a.next = list1;a = a.next;list1 = list1.next;} else {a.next = list2;a = a.next;list2 = list2.next;}}if( list1 ){a.next = list1}else if( list2 ){a.next = list2}return b.next;
};

爬楼梯

  • 题面
    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
  • 知识点
    动态规划
  • 思路
    对于每一步,他可能从 n-1 到来,或者从 n-2 到来,所以第 n 步的可能方案是第 n-1 和第 n-2 的方案数的和,从 2 开始遍历到 n 步即可
  • 代码
var climbStairs = function (n) {let dp = [1, 1];for (var i = 2; i <= n; i++) {dp[i] = dp[i - 1] + dp[i - 2];}return dp[n];
};

二叉树的中序遍历

  • 题面
    给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
  • 知识点
    二叉树,中序遍历
  • 思路
    dfs 实现中序遍历,对于每一个节点,如果有左孩子就一直搜索左孩子,没有左孩子就输出节点内容,最后再搜索二叉树的右孩子
  • 代码
var inorderTraversal = function (root) {let re = [];let dfs = (node) => {if (!node) {return;}if (node.left) {dfs(node.left);}re.push(node.val);if (node.right) {dfs(node.right);}}dfs(root);return re;
};
http://www.lryc.cn/news/6439.html

相关文章:

  • HTTP协议
  • javafx学习教程
  • 百度百科创建词条教程合集分享,赶紧收藏起来
  • 镜像恒流源电路分析
  • 奥威软件宏昊化工启动BI项目,打造智能制造标杆
  • GitHub访问问题与FastGithub下载及使用(详细篇)
  • 这个打上实时补丁的Linux内核,大家可以看一下
  • 三维形体的表面积
  • 二维码数据压缩实践 | 使用python对二维码数据进行压缩 |不乱码,支持中文
  • C语言学习_DAY_3_基本数据类型_运算符与表达式【C语言学习笔记】
  • c++练习题(4)
  • 腾讯云 cos 字体在CDN上跨域处理
  • api是什么意思?又该如何使用呢?
  • JavaScript------面向对象
  • charles+夜神模拟器抓包
  • 【STC15单片机】模拟I2C操作AT24C02数据读取【更新中】
  • Hadoop
  • ArrayList源码+扩容机制分析
  • 数据库(第四次作业)
  • 传统档案管理,为什么影响企业上市进度?
  • 9个EXCEL舍入函数公式的用法和实例
  • 设计模式:代理模式给原始类附加功能
  • JavaScript刷LeetCode拿offer-链表篇
  • CPP2022-28-期末模拟测试01
  • 牛客网Python篇数据分析习题(五)
  • 华为OD机试真题JAVA实现【人数最多的站点】真题+解题思路+代码(20222023)
  • ROS2机器人编程简述humble-第四章-IMPROVED DETECTOR .4
  • 依存句法分析 -- tag和dep释义
  • 服务器常见的网络攻击以及防御方法
  • Python期末复习知识点大合集(期末不挂科版)