leetcode
带只拖鞋去流浪
这个作者很懒,什么都没留下…
展开
-
leetcode-83-删除排序链表中的重复元素-Java
文章目录题目思路Java实现题目leetcode-83-删除排序链表中的重复元素思路递归:数据结构:单链表Java实现/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode原创 2020-09-25 00:27:10 · 235 阅读 · 0 评论 -
leetcode-125-验证回文串-Java-JavaScript
文章目录题目我的解题思路JavaJavaScript题目leetcode-125-验证回文串 题目链接我的解题思路当然,我的思路不是最好的首先,这里声明,'0'-'9' 和 0-9 在 ASCALL 码里边是完全不一样的其次,验证回文串就是验证 除 数字字符和字母 之外 内容(拿出来,看是否对称,对称返回 true,否则返回 false)最后,我的核心思想是 双指针法Javaclass Solution { public static boolean isPalindrome(原创 2020-09-22 16:14:06 · 170 阅读 · 0 评论 -
leetcode-118-杨辉三角-Java-JavaScript
文章目录题目Java 实现JavaScript题目leetcode-原题链接Java 实现leetcode-题解-Java思路:找规律,每行的首尾都是 1,其他 arr[i][j] = arr[i-1][j-1]+arr[i-1][j]class Solution { public List<List<Integer>> generate(int numRows) { /** * [ * [1],原创 2020-09-22 11:53:27 · 231 阅读 · 0 评论 -
leetcode-38-外观数列(Java-递归)
题目:这道题暂时没有官方的题解,但是不难看出,这道题是需要用递归去求解,有规律可循。StringBuilder的方法:append(String str)或append(char c):字符串连接toString():返回一个与构建起或缓冲器内容相同的字符串appendcodePoint(int cp):追加一个代码点,并将其转换为一个或两个代码单元并返回thissetCharAt(int i, char c):将第i个代码单元设置为cinsert(int offset, String s原创 2020-08-27 23:55:37 · 508 阅读 · 0 评论 -
leetcode-66-加一(Java-动态数组转数组)
题目:看到这道题,我首先想到的是JavaScript的便捷(数组长度可变,可以任何位置插入)对应Java的应该就是ArrayList,当然了也要用 int 的包装类 Integer;其中ArrayList<Integer>转int[]类型的方式是:list.stream().mapToInt(Integer::valueOf).toArray();public static int[] plusOne(int[] digits) { int i = digits.length-1原创 2020-08-28 08:31:24 · 317 阅读 · 0 评论 -
leetcode-97-交错字符串
递归-暴力思路:一个字符一个字符进行比较。/** * @param {string} s1 * @param {string} s2 * @param {string} s3 * @return {boolean} */var isInterleave = function(s1, s2, s3) { const n = s1.length, m = s2.length; if (n + m != s3.length) { return fa.原创 2020-07-19 00:15:55 · 211 阅读 · 0 评论 -
leetcode-96-不同的二叉搜索树
动态规划给定一个有序序列 1 ⋯n,为了构建出一棵二叉搜索树,我们可以遍历每个数字 ii,将该数字作为树根,将 1⋯(i−1) 序列作为左子树,将 (i+1)⋯n 序列作为右子树。接着我们可以按照同样的方式递归构建左子树和右子树。在上述构建的过程中,由于根的值不同,因此我们能保证每棵二叉搜索树是唯一的。/** * @param {number} n * @return {number} */var numTrees = function(n) { let res = new.原创 2020-07-16 11:56:33 · 116 阅读 · 0 评论 -
leetcode-10-正则表达式匹配
动态规划绘制如下图的 ‘aaa’ 与 ‘abac*a’ 的正则表达式匹配/** * @param {string} s * @param {string} p * @return {boolean} */var isMatch = function(s, p) { const sLen = s.length, pLen = p.length; let dp = new Array(sLen + 1); for (let i = 0; i <.原创 2020-07-15 16:44:20 · 178 阅读 · 0 评论 -
leetcode-402-移掉k位数字
贪心算法依题意,我们要删除k位数字使得最后这个数值最小,其实不难发现,1432(去掉1位数字最小是132),1432(去掉2位数字最小是12),1432(去掉3位数字最小是1),那么这里面的规律是什么呢?很显然,就是前一个数比后一个数大就会去除掉,因此,可以开始了。当然,不能忽略细节去除个数和字符串长度相等时,返回的应该是0去除之后,最前的0应该去除(如002应处理成2)最后一个,最容易忽略(如2000去除1个数之后会变成000),如果不处理,返回的就可能是空串。var removeKd.原创 2020-07-14 18:41:15 · 218 阅读 · 0 评论 -
leetcode-120-三角形最小路径和
动态规划依题意,不难发现其中的规律,其中规律如下:第一个元素和最后一个元素只能和同一列的相加其他元素可以和同一列和前一列的相加当然,要求的都是前一行因此,动态转移方程如下:dp[i][0] = dp[i-1][0] + triangle[i][0]dp[i][j] = min(dp[i-1][j],dp[i-1][j-1]) + triangle[i][j]假设该行元素个数是n dp[i][n-1] = dp[i-1][j-1] + triangle[i][j]// @lc c.原创 2020-07-14 09:35:55 · 156 阅读 · 0 评论 -
leetcode-350-两个数组的交集 II
哈希表万物皆对象,JavaScript 的对象就具有哈希表的功能,所以接下来使用对象代替哈希表(实际上在 JavaScript 里面没有哈希表的概念,大概就是因为这个原因吧)。假设nums1长度是n,nums2长度是m,那么时间复杂度 O(n+m)。首先构造哈希表,其次对照哈希表返回交集。var intersect = function(nums1, nums2) { const n = nums1.length; const m = nums2.length; if (.原创 2020-07-13 09:56:38 · 105 阅读 · 0 评论 -
leetcode-14-最长公共前缀
横向扫描(暴力)例如 ["flower","flow","flight"]1. 先赋予 res 初始值 flower2. flower 和 flow 明显 flow 长度短,比较4次,得到 res = "flow"3. flow 和 flight 显然 flow 比较短,比较4次,得到 res = "fl"4. 因此,其最长公共前缀是 "fl"// @lc code=start/** * @param {string[]} strs * @return {string} */v...原创 2020-07-12 14:49:37 · 96 阅读 · 0 评论 -
leetcode-174-地下城游戏
动态规划注意一个最重要的条件,如果勇士的血量小于1,那么英雄就挂了,所以转移方程 dp[i][j]=max(min(dp[i+1][j],dp[i][j+1])−dungeon(i,j),1) 。也就是说勇士的血量最小都要是1,保证勇士能够活着见到公主。// @lc code=start/** * @param {number[][]} dungeon * @return {number} */var calculateMinimumHP = function(dungeon) { ..原创 2020-07-12 13:59:56 · 220 阅读 · 0 评论 -
leetcode-309-最佳买卖股票时机含冷冻期
动态规划// @lc code=start/** * @param {number[]} prices * @return {number} */var maxProfit = function(prices) { const len = prices.length; if (!len) { return 0; } let dp = new Array(len + 1); for (let i = 0; i <= len; i++.原创 2020-07-10 15:46:28 · 167 阅读 · 0 评论 -
leetcode-面试题 17.13. 恢复空格
js中forEach,for in,for of循环的用法JS对于字符串的切割截取/** * @param {string[]} dictionary * @param {string} sentence * @return {number} */var respace = function(dictionary, sentence) { const len = sentence.length; if (!len) return 0; const dict = Arr.原创 2020-07-09 15:14:29 · 153 阅读 · 1 评论 -
leetcode-面试题 16.11. 跳水板
这是一道数学题,排列组合里面的组合。反正不是长的就是短的,那就分成两种即可,最后在进行数组去重就ok了。/** * @param {number} shorter * @param {number} longer * @param {number} k * @return {number[]} */var divingBoard = function(shorter, longer, k) { let res = []; if(!k) return res; for.原创 2020-07-08 12:18:36 · 142 阅读 · 0 评论 -
leetcode-55-跳跃游戏
贪心算法// @lc code=start/** * @param {number[]} nums * @return {boolean} */var canJump = function(nums) { let reach = 0; for (let i = 0; i < nums.length; i++) { if (i > reach) return false; reach = Math.max(reach, i + num.原创 2020-07-08 11:55:24 · 141 阅读 · 0 评论 -
leetcode-54-螺旋矩阵
模拟螺旋矩阵的路径// @lc code=start/** * @param {number[][]} matrix * @return {number[]} */var spiralOrder = function(matrix) { let res = []; if (!matrix.length) return res; let up = 0; let down = matrix.length - 1; let left = 0; let .原创 2020-07-08 10:17:59 · 127 阅读 · 0 评论 -
leetcode-53-最大子序和
动态规划思路:如果前面的小于等于零,那我们丢弃前面的子数组。// @lc code=start/** * @param {number[]} nums * @return {number} */var maxSubArray = function(nums) { const len = nums.length; const dp = new Array(len); dp[0] = nums[0]; for (let i = 1.原创 2020-07-08 09:31:58 · 95 阅读 · 0 评论 -
leetcode-112-路径总和
function TreeNode(val) { this.val = val; this.left = this.right = null;}解一:递归先判断树结构是否为null,如果是null,直接返回false;判断该树节点是否有后代,没有直接返回判断该节点值是否等于sum的布尔值;最后,剩下就是有左子节点或者右子节点的情况,这种情况递归。// @lc code=start/** * @param {TreeNode} root * @param {numbe.原创 2020-07-07 15:28:47 · 250 阅读 · 0 评论 -
leetcode-63-不同路径
动态规划// @lc code=start/** * @param {number[][]} obstacleGrid * @return {number} */var uniquePathsWithObstacles = function(obstacleGrid) { if (obstacleGrid == null || obstacleGrid.length == 0) { return 0; } let row = obstacleGrid...原创 2020-07-06 23:13:42 · 122 阅读 · 0 评论 -
leetcode-44-通配符匹配
动态规划求解:// @lc code=start/** * @param {string} s * @param {string} p * @return {boolean} */var isMatch = function(s, p) { let row = s.length; let col = p.length; let dp = new Array(row + 1); for (let i = 0; i <= row; i++) { ..原创 2020-07-06 20:14:05 · 114 阅读 · 0 评论 -
leetcode-32-最长有效括号
解1:动态规划// @lc code=start/** * @param {string} s * @return {number} */var longestValidParentheses = function(s) { const sLen = s.length; if (!sLen) return 0; let dp = new Array(sLen).fill(0); dp[-1] = 0; s.split('').forE.原创 2020-07-05 19:05:51 · 130 阅读 · 0 评论 -
leetcode-108-将有序数组转换为二叉搜索树
题目给出一个 TreeNode 的构造函数(也是树的数据结构)function TreeNode(val) { this.val = val; this.left = this.right = null;}二分递归 =>function TreeNode(val) { this.val = val; this.left = this.right = null;}var sortedArrayToBST = function(nums) { i.原创 2020-07-03 11:05:24 · 117 阅读 · 0 评论 -
leetcode-378-有序矩阵中第K小的元素
二维数组转一维数组(扁平化)- Array内置方法 flat()/** * @param {number[][]} matrix * @param {number} k * @return {number} */var kthSmallest = function(matrix, k) { // 二维数组转一维数组 -> 排序(正序) return matrix.flat().sort((a, b) => a - b)[k - 1];};感谢观看 期待关注..原创 2020-07-02 13:36:07 · 125 阅读 · 0 评论 -
leetcode-718-最长重复子数组
深度优先搜索算法/** * @param {number[]} A * @param {number[]} B * @return {number} */var findLength = function(A, B) { const al = A.length; const bl = B.length; const dp = new Array(al + 1).fill(0); for (let i = 0; i <= al; i++) { .原创 2020-07-01 16:35:02 · 165 阅读 · 0 评论 -
leetcode-209-长度最小的数组
指针法:假设 [i,j] 区间内的连续子数组的和正好等于 s,那么该子数组的长度为 j-i+1;但是数组中可能有许多个连续子数组的和正好等于 s,因此我们需要继续向后搜索,并用 minLen 标记最小长度。在后面附上演示。/** * @param {number} s * @param {number[]} nums * @return {number} */var minSubArrayLen = function(s, nums) { if (nums.length == 0).原创 2020-06-30 23:01:36 · 188 阅读 · 0 评论