算法
一些有趣的算法题
radation
这个作者很懒,什么都没留下…
展开
-
leetcode 39.组合总和与40.组合总和Ⅱ
39. 组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]]tmpPath为当前数组,target为余下目标数量,sta原创 2020-07-28 14:15:08 · 159 阅读 · 1 评论 -
leetcode 10.正则表达式匹配
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符串。答案:本题可以使用动态规划原创 2020-07-25 11:59:16 · 102 阅读 · 0 评论 -
leetcode 46.全排列
给定一个 没有重复 数字的序列,返回其所有可能的全排列。解:递归。每次从数组删除一个值,直到数组大小为0。重复的记录在map中跳过。var subsets = function(nums) { var ans = [[]]; var len = nums.length; var m = new Map(); fun(nums); function fun(arr){ //arr = arr.concat(); if(m.has(原创 2020-07-20 12:20:30 · 94 阅读 · 0 评论 -
二分查找的边界问题
二分查找在有序数组中是一个非常低成本的查找方法,但是不对二分查找十分的熟悉很难对不同的需求快速写出不同的边界判断和边界返回。1.二分查找中的下中位数median = (length - 1) / 22.模板分析由于需求前变万化,我个人推荐固定(l<r)的判别。而对于l指针和r指针的理解:对于搜索过程中, high 位置的作用是减少搜索空间而 low 的作用是从0开始一直向着目标数...原创 2020-04-14 11:08:27 · 377 阅读 · 0 评论 -
leetcode 554. 砖墙(javascript)
你的面前有一堵方形的、由多行砖块组成的砖墙。 这些砖块高度相同但是宽度不同。你现在要画一条自顶向下的、穿过最少砖块的垂线。砖墙由行的列表表示。 每一行都是一个代表从左至右每块砖的宽度的整数列表。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你需要找出怎样画才能使这条线穿过的砖块数量最少,并且返回穿过的砖块数量。你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。初看此题...原创 2020-04-09 10:19:26 · 203 阅读 · 0 评论 -
leetcode 95.不同的二叉搜索树 II(javascript)
给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树。这道题是不同的二叉搜索树 I的进阶版本,I可以同过卡塔兰数直接抽象出答案,但是本题必须将构建的树具体保存。var generateTrees = function(n) { if(n==0) return [];//考虑为0的情况,防止返回[[]] let arr=[]; for(let i=1;...原创 2020-03-31 18:59:26 · 192 阅读 · 0 评论