算法
whuhewei
拥抱变化
展开
-
牛客HJ20 密码验证合格程序
密码验证合格程序原创 2022-10-17 15:42:35 · 236 阅读 · 0 评论 -
牛客NC61 两数之和
两数之和原创 2022-10-14 14:35:31 · 425 阅读 · 0 评论 -
Leetcode 149题 —— 直线上最多的点数
直线上最多的点数原创 2022-10-13 16:37:02 · 547 阅读 · 0 评论 -
刷题——二叉树的镜像(翻转二叉树)
题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入:镜像输出:js代码/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {TreeNode} */var mirro原创 2020-08-03 08:36:48 · 251 阅读 · 0 评论 -
刷题——Leetcode98 验证二叉搜索树
题目描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。分析可以用二叉树的中序遍历解这道题,由于中序遍历顺序刚好是左-根-右,因此只要中序遍历的结果是升序的,就是二叉搜索树,否则不是二叉搜索树。js代码/** * Definition for a binary tree node. * function TreeNode(val) {原创 2020-07-25 11:56:26 · 165 阅读 · 0 评论 -
刷题——LeetCode94 二叉树的中序遍历
题目描述给定一个二叉树,返回它的中序遍历。思路分析中序遍历即以左-根-右的顺序访问节点。经典的方法是使用递归,直截了当。我们可以定义一个辅助函数来实现递归。js代码/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root原创 2020-07-23 14:30:43 · 225 阅读 · 1 评论 -
刷题——元素计数
题目描述给定一个整数数组arr,计数元素x,使x + 1也在arr。如果在arr中有重复的,分开计数。例1:Input: arr = [1, 2, 3]Output: 2例2:Input: [1, 1, 3, 3, 5, 5, 7, 7]Output: 0例3:Input: [1, 3, 2, 3, 5, 0]Output: 3例4:Input: arr = [1, 1, 2, 2]Output: 2思路分析首先使用字典将数组中的值及其出现的次数按照键值对的形式存储起来,原创 2020-07-04 08:58:53 · 118 阅读 · 0 评论 -
刷题——字母异位词分组
题目描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入:[“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“eat”, “tea”, “ate”],[“tan”, “nat”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。思路分析此题主要考察对字典操作的应用。ES6中引入了MAP数据解构,我们用它来解这道题目。算法流程:确定单词所包含字母组合——搜索是否已在字原创 2020-06-27 10:51:52 · 274 阅读 · 0 评论 -
刷题——买卖股票的最佳时机
题目描述给定一个数组,它的第i个元素是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多比交易(你必须在再次购买前出售掉之前的股票)。Example:输入:[7, 1, 5, 3, 6, 4]输出: 7解释:在第2天(股票价格 = 1)的时候买入,在第3天(股票价格 = 5)的时候卖出,这笔交易所能获得利润 = 5 - 1 = 4。随后,在第4天(股票价格 = 3)的时候买入,在第5天(股票价格 = 6原创 2020-06-26 11:19:48 · 220 阅读 · 0 评论 -
刷题——移动零
题目描述给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。Example:Input: [0, 1, 0, 3, 12]Output: [1, 3, 12, 0, 0]要求:不能创建一个新的数组来做操作尽量少的操作次数思路分析我们用js来编写这个函数。要求在原数组上操作,可能我们最先想到的是交换元素位置,但是js的数组提供了很多好用的方法,可以直接拿来用;尽量少的操作次数,要求我们在寻0的时候倒序遍历。简单来说,就是从后往前找0,每当找到一个0原创 2020-06-25 10:42:24 · 265 阅读 · 0 评论