自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 JavaScript|LeetCode|动态规划|343.整数拆分

法1:动态规划看了题解想法:“给定一个正整数 n,将其拆分为至少两个正整数的和”。则 n >= 2用数组dp保存整数 1 ~ n 经拆分后的最大乘积(后续需用到dp[1] = 1,比如 3 = 1 + 2)拆分整数 i 时,先将其拆分为 i - j 和 j;最大值在下面几种情况中产生:(i - j) * j:即 i - j 和 j 均不再拆分dp[i - j] * dp[...

2020-03-30 11:57:47 482

原创 JavaScript|LeetCode|动态规划|413.等差数列划分

法1:动态规划看了题解想法:例如数组:A = [1,2,3,4]等差数列至少有3个元素,故考虑以A[2]、A[3]结尾的等差数列。以A[2]结尾的等差数列:[1,2,3] (A[2] - A[1] == A[1] - A[0])以A[3]结尾的等差数列:[2,3,4] (A[3] - A[2] == A[2] - A[1])因为A[3]与A[2]、A[1]成等差数列,又A...

2020-03-27 11:12:15 186

原创 JavaScript|LeetCode|动态规划|303.区域和检索-数组不可变

法1:动态规划看了题解想法:索引 i 到 j 的元素和(含 i、j)= (索引 0 到 j 的元素和)-(索引 0 到 i - 1 的元素和)用一个数组sum保存索引 0 到 j 的元素和(j = 0, 1, 2, ……, n - 1)若 i == 0,则直接返回sum[ j ]/** * @param {number[]} nums */var NumArray = ...

2020-03-26 10:30:53 210

原创 JavaScript|LeetCode|动态规划|62.不同路径

法1:动态规划方法类同JavaScript|LeetCode|动态规划|64.最小路径和 法2想法:使用一个一维数组dp,来保存到达当前行的每个网格的不同路径数到达第一行或第一列的每个网格的不同路径数目均为1到达其他网格的不同路径数目:当前网格上面的一个网格、当前网格左面的一个网格,到达这两者的不同路径数之和/** * @param {number} m * @param {n...

2020-03-22 11:05:50 234

原创 JavaScript|LeetCode|动态规划|64.最小路径和

法1:动态规划(未优化版)想法:对于第 i 行、第 j 列位置,从左上角到此位置的最小路径为:dp[i][j] = grid[i][j] + min{dp[i - 1][j] , dp[i][j - 1]}dp[i - 1][j] 表示从上走到下到达[i][j];dp[i][j - 1]表示从左走到右到达[i][j]/** * @param {number[][]} grid* ...

2020-03-21 12:31:23 212

原创 JavaScript|LeetCode|动态规划|213.打家劫舍Ⅱ

法1:动态规划看了答案想法:结果分两种情况讨论:不含最后一个房屋:这样第一个房屋可以被包含。(“可以”,而不是“一定”)不含第一个房屋针对以上两个情况,可分别进行最高金额求解(即LeetCode 198.打家劫舍)。取最大值,即为结果/** * @param {number[]} nums * @return {number} */var rob = functi...

2020-03-20 11:17:40 183

原创 JavaScript|LeetCode|搜索|51.N皇后

法1:回溯通过之后看了答案,改进了一下想法:依次在每行放皇后,row(已经到了第row行,此时第0行到row - 1行都放了皇后,即现在已经放了row个皇后)== n,则将此时的board(放皇后的棋盘)放入答案因为按行依次放皇后,所以不会有多个皇后在同行,只需考虑同列,左上到右下,左下到右上同列:visitedC[]数组标记,其中有n个元素左上到右下:同一线上元素下标特征:(行...

2020-03-15 17:29:46 211

原创 JavaScript|LeetCode|搜索|37.解数独

法1:回溯想法:遍历数独中每一个空白格,依次填入1~9,每一次填入都要检验其合法性(即行、列、3×3宫不重复),不合法则变回’.’(对当前空白格填入1到9均不合法,则说明前面的有些空白格填错了,回溯),合法则进入下一阶段从上一个填的空白格所在行开始检索(前面的行已经填了),与步骤1相同,依次填入1~9,合法则继续进行下一阶段,不合法则回溯/** * @param {character...

2020-03-15 11:49:05 106

原创 JavaScript|LeetCode|搜索|78.子集

法1想法:结果集 = 当前元素 + 当前元素与之后剩余元素的子集的组合 + []陷阱:“当前元素与之后剩余元素的子集的组合”:当前元素应该与之后剩余元素的真子集组合,否则会出现重复组合(和空子集组合时)/** * @param {number[]} nums * @return {number[][]} */var subsets = function(nums) { ...

2020-03-11 15:39:58 177

原创 JavaScript|LeetCode|搜索|216. 组合总和Ⅲ

法1想法:该题与JavaScript|LeetCode|搜索|39.组合总和、JavaScript|LeetCode|搜索|40.组合总和Ⅱ相似,根据题目描述的不同修改代码candidates自己创建,包含9~1递归结束的条件加上:k与组合长度的判断candidates中不包含重复的数字,所以无需通过判断candidates[i]是否等于candidates[i - 1]来剪枝...

2020-03-10 10:49:26 196

原创 JavaScript|LeetCode|搜索|40.组合总和Ⅱ

法1:回溯想法:40.组合总和Ⅱ是JavaScript|LeetCode|搜索|39.组合总和的“变式”两者的解法基本相同,观察39.与40.的题目描述区别,给代码增加相应的限制“candidates 中的每个数字在每个组合中只能使用一次。”“解集不能包含重复的组合”所以:1)仍然将candidates降序排列;2)当前数字加入组合后,将当前数字之后的数字进行组合,以得到tar...

2020-03-10 10:29:59 140

原创 JavaScript|LeetCode|搜索|39.组合总和

法1:回溯想法:将candidates降序排列,当前数字大于target,则不使用该数字作为组合的第一个数字(跳过该数字)遇到一个数字<=target,则对小于等于它的剩余数字进行组合,使得组合的和等于新的target,即target-该数字/** * @param {number[]} candidates * @param {number} target * @retu...

2020-03-09 11:54:00 194

原创 JavaScript|LeetCode|搜索|77.组合

法1想法:大问题包含小问题,大小问题是同一种类型组合而非排列,那么某一组合出现之后,另一组合不能与其相同(元素完全相同)。如何保证?已经当了某一组合第一个元素的数字,不能在加入后面的组合中。因为从1到n,为升序排列,则优先小数字先当组合的第一个元素,然后得到剩余数字的组合,与该数字拼接。1到n的升序也保证了,前面已经加入的数字不会再次加入剩余数字的组合中/** * @param {n...

2020-03-09 11:24:13 168

原创 引入外部JS文件

<head> <meta charset="UTF-8"> <title>首页</title> <script type="text/javascript" src="firstPage.js"></script></head>type:“text/javascript”src:外部...

2020-03-08 15:56:20 255

原创 JavaScript|LeetCode|搜索|47.全排列Ⅱ

法1:回溯想法:每一次函数调用,向temp中加入一个之前未加入temp的数字(因为nums中存在重复数字,所以需要另外使用一个arrived数字对应标记nums中数字是否已经加入了temp)全排列不重复,则需要判断当前符合条件的temp是否已经在结果output中注:可以先看一下:JavaScript|LeetCode|搜索|46.全排列/** * @param {number[]...

2020-03-08 12:02:00 214

原创 JavaScript|LeetCode|搜索|46.全排列

法1:回溯想法:将访问到的数字加入临时数组temp继续访问nums中的数字,不在temp中的可加入(加入了temp相当于做了标记)尝试了各种陆续将各个数字加入temp的方式,且temp中数字无重复,各种方式得到的答案即为题目所求注:当前循环中,这一轮没有加入的数字,下一轮可能还会加入;或在调用的函数的循环中有可能加入,可以覆盖所有的情况/** * @param {number[]...

2020-03-08 09:49:49 200

原创 JavaScript|LeetCode|搜索|257.二叉树的所有路径

法1:递归想法:大问题包含小问题,大小问题是同种问题找到root的左子树和右子树的所有可能路径(从左子树的根到叶子,从右子树的根到叶子)(分为left和right两类),分别与root衔接,得到最终结果找左子树的所有可能的路径(从左子树的根到叶子)(此时左子树的根为新的root’):找到root’的左子树和右子树的所有可能路径(分为left‘和right’两类),分别与root‘衔接,得...

2020-03-07 15:58:34 247

原创 JavaScript|LeetCode|搜索|79.单词搜索

法1 DFS回溯想法:矩阵arrived记录矩阵board中某个字符是否被访问从矩阵board中找到word的第一个字符,将word截断,取除第一个字符之后的字符,组成leftWord然后找leftWord的第一个字符向word的第一个字符的位置的上下左右寻找有等于leftWord的第一个字符的位置,则以此位置为新起点,去除了leftWord的第一个字符的剩余字符leftWord...

2020-03-07 13:54:54 151

原创 JavaScript|LeetCode|搜索|93.复原IP地址

法1:回溯看了答案想法:IP地址由4部分组成,四部分之间由 . 分隔,如:255.255.255.255(即11111111.11111111.11111111.11111111)每部分>=0 && 每部分<= 255每部分没有前导零当前IP地址已经有4部分 && 输入的字符串已访问完最后一位,则当前IP地址是答案之一,存入增加一个部分-...

2020-03-06 17:17:20 263

原创 JavaScript子字符串

如何获取JavaScript字符串的子串以下三个都是字符串方法,三者都不改变原字符串,而是返回新字符串1.substr(x, subLength)x为截取起点subLength为截取的子串的长度x可为负数省略subLength,截取[x, 原字符串最后一位]2.substring(x, y)与slice(x, y)相似,但x, y >= 03.slice(x, y)...

2020-03-06 13:07:53 288

原创 JavaScript|LeetCode|搜索|17.电话号码的字母组合

法1:回溯backtracking看了答案想法:输出的各个字符串的长度等于输入的字符串长度输入的字符串长度相当于搜索树的深度(高度)当组成的字符串的长度等于输入字符串长度时,就应该将该字符串加入结果集中;然后将最后一个加入的字符¥删去,与和¥同组的字符再衔接组成新的字符串注:¥是一个字符代号;同组指的是在键盘上的同一按钮上/** * @param {string} digits ...

2020-03-06 11:58:23 242

原创 JavaScript|LeetCode|搜索|417.太平洋大西洋水流问题

法1:DFS|顺流(从陆地到海洋)想法:遍历每一块陆地对于某陆地:进行DFS,符合下列条件则可达:1)比当前陆地低/相等的陆地2)上下左右相邻陆地对可达陆地进行标记标记结束之后:遍历上下左右边界,左上边界有标记则可达太平洋,右下边界可达大西洋可达太平洋和大西洋,则存下该陆地坐标另用以矩阵保存标记/** * @param {number[][]} matrix * ...

2020-03-05 11:08:00 172

原创 JavaScript|LeetCode|搜索|130.被围绕的区域

法1:DFS想法:1.遍历四周字母,遍历到"O",以该"O"为起点,进行DFS,与该"O"相连的"O"做上标记(包括该"O")。2.将标记了的位置设值"O",其他位置为"X"。3.做标记方式:将原"O"设为"T"。/** * @param {character[][]} board * @return {void} Do not return anything, modify board...

2020-03-04 11:49:54 209

原创 JavaScript|LeetCode|双指针|167. 两数之和 II - 输入有序数组

法1 暴力破解var twoSum = function(numbers, target) { var i,j; for(i = 0; i < numbers.length; i++) { for(j = 1; j < numbers.length; j++) { if(i == j) { con...

2020-03-04 10:39:20 270 1

原创 二叉树:先序|中序|后序遍历

先序根->左->右对于当前节点,先输出它的本身,再输出它的左孩子,最后输出它的右孩子。中序左->根->右对于当前节点,先输出它的左孩子,再输出它本身,最后输出它的右孩子。后续左->右->根对于当前节点,先输出它的左孩子,再输出它的右孩子,最后输出它本身。...

2020-03-01 15:57:58 104

原创 如何实现页面底栏

底栏*底栏两侧的空白1. 修改浏览器默认设定html, body { margin: 0; padding: 0;}2. 可使用p标签来构造:p的样式<p style="margin: 0; height: 3%; width: 100%; position: fixed; bottom: 0; background-color: darkred" >底栏...

2020-03-01 12:01:50 344

原创 引入外部样式表

引入外部样式表<head> <meta charset="UTF-8"> <title>首页</title> <link rel="stylesheet" type="text/css" href="firstPage.css"/></head>1. head标签内部2. link标签re...

2020-03-01 11:21:35 634

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除