自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 资源 (2)
  • 收藏
  • 关注

原创 JavaScript一维数组、二维数组的深拷贝

js一维数组的深拷贝方法一:var arr = [1,2,3];var arr2 = arr.slice(0);方法二:var arr = [1,2,3];var arr2 = arr.concat();方法三:var arr = [1,2,3];var arr2 = [...arr];js二维数组的深拷贝var arr = [[1,2,3],[4,5,6]];var arr2 = arr.map((item) => { return [...item];});

2022-05-02 10:48:24 1320

原创 Less笔记(尚硅谷前端less笔记)

总结概览笔记:https://blog.csdn.net/Liukairui/article/details/108271870

2022-04-04 15:16:08 282

原创 剑指 Offer 33. 二叉搜索树的后序遍历序列(JavaScript语言)

思路(递归分治法)代码/** * @param {number[]} postorder * @return {boolean} */var verifyPostorder = function(postorder) { var recur = function(left, right) { if(left >= right) return true; var cur = left;//cur用来遍历的指针 while(postord

2022-03-07 14:54:07 710

原创 剑指 Offer 16. 数值的整数次方(JavaScript语言)

思路递归。二分。代码/** * @param {number} x * @param {number} n * @return {number} */var myPow = function(x, n) { if(n == 0) return 1; if(n == 1) return x; if(n == -1) return 1/x; if(n > 0) { var temp = myPow(x, Math.floor(n/2

2022-03-06 16:36:50 219

原创 剑指 Offer 68 - II. 二叉树的最近公共祖先(JavaScript语言)

思路(DFS法)思路参考自:剑指 Offer 68 - II. 二叉树的最近公共祖先(DFS ,清晰图解)代码/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @param {TreeNode} p * @p

2022-03-06 14:02:49 193

原创 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(JavaScript语言)

思路(一次遍历法)思路来自:二叉搜索树的最近公共祖先注意到题目中给出的是一棵「二叉搜索树」,因此我们可以快速地找出树中的某个节点以及从根节点到该节点的路径,例如我们需要找到节点 p:我们从根节点开始遍历;如果当前节点就是 p,那么成功地找到了节点;如果当前节点的值大于 p的值,说明 p 应该在当前节点的左子树,因此将当前节点移动到它的左子节点;如果当前节点的值小于 p的值,说明 p应该在当前节点的右子树,因此将当前节点移动到它的右子节点。具体寻找最近公共组先思路我们从根节点开始遍历;

2022-03-06 13:06:08 240

原创 剑指 Offer 64. 求1+2+…+n(JavaScript语言)

思路利用逻辑与。代码/** * @param {number} n * @return {number} */var sumNums = function(n) { var res = 0; res = n && n +sumNums(n-1); return res; };

2022-03-06 12:43:07 274

原创 剑指 Offer 55 - II. 平衡二叉树(JavaScript语言)

思路一(自顶向下的递归)思路来自:平衡二叉树定义函数height,用于计算二叉树中的任意一个节点 p的高度。有了计算节点高度的函数,即可判断二叉树是否平衡。具体做法类似于二叉树的前序遍历,即对于当前遍历到的节点,首先计算左右子树的高度,如果左右子树的高度差是否不超过 11,再分别递归地遍历左右子节点,并判断左子树和右子树是否平衡。这是一个自顶向下的递归的过程。代码/** * Definition for a binary tree node. * function TreeNode(val) {

2022-03-03 22:00:10 86

原创 剑指 Offer 55 - I. 二叉树的深度(JavaScript语言)

思路一(DFS)深度优先遍历。代码版本一(菜鸡版)/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {number} */var maxDepth = function(root) {

2022-03-02 21:20:32 346

原创 剑指 Offer 61. 扑克牌中的顺子(JavaScript语言)

思路代码/** * @param {number[]} nums * @return {boolean} */var isStraight = function(nums) { var flag = true; nums.sort((a, b) => a - b); if(nums[0] != 0) { for(let i = 0; i < nums.length - 1; i++) { if

2022-03-01 23:42:52 500

原创 剑指 Offer 45. 把数组排成最小的数(JavaScript语言)

思路代码/** * @param {number[]} nums * @return {string} */var minNumber = function(nums) { var res = ''; nums.sort(function(a, b) { if(parseInt(''+ a + b) < parseInt('' + b + a)) return -1; if(parseInt(''+ a + b) < parseInt

2022-03-01 23:24:35 310

原创 剑指 Offer 54. 二叉搜索树的第k大节点(JavaScript语言)

思路(先序遍历:右根左)按照右根左的遍历顺序,就是从大到小的遍历顺序。每遍历一个,k–,当k==0时,即为所求。代码/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @param {number} k * @

2022-02-28 20:16:34 116

原创 剑指 Offer 36. 二叉搜索树与双向链表(JavaScript语言)

思路一(菜鸡版)使用数组存储先序遍历的各node(先序遍历得到的是从小到大的顺序)。然后循环给数组里的每个node赋上新的left和right。代码/** * // Definition for a Node. * function Node(val,left,right) { * this.val = val; * this.left = left; * this.right = right; * }; *//** * @param {Node} root *

2022-02-28 17:25:50 439

原创 剑指 Offer 34. 二叉树中和为某一值的路径(JavaScript语言)

思路(深度优先算法)采用深度优先搜索的方式,枚举每一条从根节点到叶子节点的路径。当我们遍历到叶子节点,且此时路径和恰为目标和时,我们就找到了一条满足条件的路径。代码/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? nul

2022-02-28 15:55:30 350

原创 剑指 Offer 13. 机器人的运动范围(JavaScript语言)

思路(深度优先搜索+回溯)代码/** * @param {number} m * @param {number} n * @param {number} k * @return {number} */var movingCount = function(m, n, k) { var visited = new Array(m); for(let i = 0; i < m; i++) { visited[i] = new Array(n).fill(fal

2022-02-25 00:31:46 210

原创 剑指 Offer 12. 矩阵中的路径(JavaScript语言)

思路(dfs+回溯)思路参考自:面试题12. 矩阵中的路径( DFS + 剪枝 ,清晰图解)解题思路:本问题是典型的矩阵搜索问题,可使用深度优先搜索(DFS)+ 剪枝解决。深度优先搜索: 可以理解为暴力法遍历矩阵中所有字符串可能性。DFS 通过递归,先朝一个方向搜到底,再回溯至上个节点,沿另一个方向搜索,以此类推。剪枝: 在搜索中,遇到 这条路不可能和目标字符串匹配成功 的情况(例如:此矩阵元素和目标字符不同、此元素已被访问),则应立即返回,称之为 可行性剪枝 。DFS 解析:递归参数:

2022-02-24 22:22:05 470

原创 力扣第16题-最接近的三数之和(JavaScript语言)

思路(排序+双指针法)(与上一题有点相似,借助上一题的思路)这题其实可以不用去重,就能求得。(我先不用去重做的。想试试去重,结果又是各种坑)代码没有考虑元素去重的代码/** * @param {number[]} nums * @param {number} target * @return {number} */var threeSumClosest = function(nums, target) { nums = nums.sort((a, b) => a - b)

2022-02-23 22:52:26 272

原创 力扣第15题-三数之和(JavaScript语言)

思路(双指针)(ps:这是目前为止做的最难的题目。细节太多,坑太多。。。)三重循环超时,坑也多。先将数组排好序。观察要使三数加起来等于0,第一个数a固定好,另外两个数b和c呈现此起彼伏的规则,b和c的查找可以双指针进行一次遍历即可。这样就将三重循环降为二重循环。但是坑还是多。。。具体实现看代码。。。自己写真的会遇见各种坑。。。代码/** * @param {number[]} nums * @return {number[][]} */var threeSum = function(nu

2022-02-23 21:17:26 302

原创 剑指 Offer 58 - I. 翻转单词顺序(JavaScript语言)

思路一(js语法糖)使用str.trim()去除首尾空字符,使用str.split(’ ‘)以空格为分隔符将字符串分割成子字符串数组,再使用arr.filter()过滤掉空格,再使用arr.reverse()将数组一个个翻转,然后使用arr.join(’ ')将数组以空格串联成字符串。代码/** * @param {string} s * @return {string} */var reverseWords = function(s) { return s.trim().split(

2022-02-23 19:48:59 207

原创 剑指 Offer 57. 和为s的两个数字(JavaScript语言)

思路(双指针法)使用两个指针。left指针指向数组头部,right指针指向数组尾部。在保证left<right的情况下,如果nums[left] + nums[right] < target,left指针右移;如果nums[left] + nums[right] > target,right指针左移;如果nums[left] + nums[right] == target,返回所求值。代码/** * @param {number[]} nums * @param {number}

2022-02-23 16:21:46 183

原创 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面(JavaScript语言)

思路(双指针法)使用两个指针。left指针指向数组头部,right指针指向数组尾部。left指针指向的如果是奇数,就一直右移。right指针指向的是偶数,就一直左移。在保证left<right的基础上,交换left指向的偶数和right指向的奇数。循环上述操作,直至left>=right。代码/** * @param {number[]} nums * @return {number[]} */var exchange = function(nums) { var left

2022-02-23 15:50:17 251

原创 剑指 Offer 52. 两个链表的第一个公共节点(JavaScript语言)

思路一(哈希集合法)(注意:空间复杂度为O(n),与题意不符合,不过也是一种思路)将一个链表的每个节点保存在set中。遍历另一个链表,看这个链表的节点在不在set中,在就返回。遍历完未返回就说明没有公共节点,返回null。代码/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } *//** * @par

2022-02-22 17:14:21 257

原创 剑指 Offer 25. 合并两个排序的链表(JavaScript语言)

思路引入一个伪节点l。(到时返回值就为l.next)。l1和l2依次遍历两个链表,比较大小,把小的那个添加到l后面。代码/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } *//** * @param {ListNode} l1 * @param {ListNode} l2 * @return {Li

2022-02-22 13:15:25 101

原创 剑指 Offer 22. 链表中倒数第k个节点(JavaScript语言)

思路(快慢指针法)快慢指针的思想。我们将第一个指针front指向链表的第k+1 个节点,第二个指针back指向链表的第一个节点,此时指针front与back二者之间刚好间隔 k个节点。此时两个指针同步向后走,当第一个指针front走到链表的尾部空节点时,则此时back指针刚好指向链表的倒数第k个节点。代码/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; *

2022-02-21 19:55:45 294

原创 剑指 Offer 18. 删除链表的节点(JavaScript语言)

思路(注意:这种题虽然简单,但是一定要注意特殊情况的处理。比如删除的是第一个节点。)代码/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } *//** * @param {ListNode} head * @param {number} val * @return {ListNode} */var

2022-02-21 19:50:06 286

原创 剑指 Offer 48. 最长不含重复字符的子字符串(JavaScript语言)

思路(动态规划法+哈希表)见代码注释。代码/** * @param {string} s * @return {number} */var lengthOfLongestSubstring = function(s) { if(s.length == 0) return 0; var dp = new Array();//dp[i]表示以s[i]结尾的最长连续不含重复字符的字符串长度 var map = new Map();//map存储以s[i]结尾的最长连续不含重复

2022-02-21 19:46:40 228

原创 剑指 Offer 46. 把数字翻译成字符串(JavaScript语言)

思路(动态规划法)状态定义:dp[i]表示以num前i个数字有多少种翻译方法转移方程:如果num第i-2位和第i-1位对应的数字大于等于10,小于等于25,dp[i] = dp[i-2] + dp[i-1];否则,dp[i] = dp[i-1]初始化:dp[0] = 1;dp[1] = 1返回值:dp[str.length]代码/** * @param {number} num * @return {number} */var translateNum = function(nu

2022-02-21 19:39:51 154

原创 剑指 Offer 47. 礼物的最大价值(JavaScript语言)

思路(动态规划法)状态定义:dp[i][j]代表从棋盘左上角开始到grid[i][j]能拿到的价值数转移方程:dp[i][j]=max(dp[i-1][j],dp[i][j-1])+grid[i][j]初始化:dp[0][0] = grid[0][0]。第一行就是一直向右走,累加起来的价值。第一列就是一直向下走,累加起来的价值。返回值:dp[m-1][n-1]代码/** * @param {number[][]} grid * @return {number} */var maxV

2022-02-21 19:32:46 196

原创 剑指 Offer 42. 连续子数组的最大和(JavaScript语言)

思路(动态规划法)思路参考自面试题42. 连续子数组的最大和(动态规划,清晰图解):状态定义:dp[i]代表以元素 nums[i]为结尾的连续子数组最大和。转移方程: 若dp[i−1]≤0,说明dp[i−1] 对dp[i] 产生负贡献,即dp[i−1]+nums[i] 还不如nums[i] 本身大。当dp[i−1]>0时:执行dp[i]=dp[i−1]+nums[i];当dp[i−1]≤0时:执行dp[i]=nums[i] ;初始状态:dp[0]=nums[0],即以nums[0] 结

2022-02-21 16:48:12 146

原创 力扣第13题-罗马数字转整数(JavaScript语言)

思路一(菜鸡版:if else语句)if else语句就完事。代码/** * @param {string} s * @return {number} */var romanToInt = function(s) { var sum = 0; for (let i = 0; i < s.length; i++) { if (s[i] == 'M') sum += 1000; else if (s[i] == 'C') {

2022-02-18 20:53:12 353

原创 剑指 Offer 63. 股票的最大利润(JavaScript语言)

思路用min[n]表示prices[i]之前的所有数中的最小值(不含prices[i])。遍历一遍数组,利润最大值,就是max和prices[i]-min[i]两者之间的最大值。在遍历过程中,记录下一个数字的min[i+1],就是min[i]和prices[i]两者之间的最小值。代码/** * @param {number[]} prices * @return {number} */var maxProfit = function(prices) { if(prices.length

2022-02-18 17:12:25 186

原创 剑指 Offer 10- II. 青蛙跳台阶问题(JavaScript语言)

思路(同斐波拉契数列问题,只不过初始值不一样。)青蛙跳到n阶台阶上,最后一步要么是从n-1跳一步跳到n上,要么是从n-2跳两步跳到n上。所以得出递推公式为f(n)=f(n-1)+f(n-2)。(n>=2)初始值:f(0)=1;f(1)=1。代码/** * @param {number} n * @return {number} */var numWays = function(n) { var dp = new Array(n+1);//dp[n]代表跳上一个n级台阶的跳法数

2022-02-18 16:55:38 280

原创 剑指 Offer 10- I. 斐波那契数列(JavaScript语言)

思路一(动态规划)状态转移方程已经给出,边界值也给出。用dp[n]记录下f[n]。相比递推节省很多不必要的计算。代码/** * @param {number} n * @return {number} */var fib = function(n) { var dp = new Array(n+1); dp[0] = 0; dp[1] = 1; for(let i = 2; i <= n; i++) { dp[i] = dp[i-1] + dp[i-2];

2022-02-18 15:47:30 236

原创 剑指 Offer 28. 对称的二叉树(JavaScript语言)

思路一(菜鸡版:利用前两题的函数)前两题写了两个函数。一个是mirrorTree(root),求二叉树的镜像树。一个是recur(A, B),判断二叉树B是否是二叉树A的子结构,规定A的根节点必须和B的根节点相同。(PS:这里也可以用【剑指 Offer 26. 树的子结构】这题的isSubStructure(A, B)函数,只不过这个函数也包含了recur函数,recur函数也可以实现本题)判断条件:如果该二叉树记作A,该二叉树的镜像树记作B,如果A是B的子结构,那么A就是对称的二叉树。代码/**

2022-02-17 23:55:54 181

原创 剑指 Offer 27. 二叉树的镜像

思路一(递归法)使用递归。做递归题最重要的就是不要具体考虑怎么实现的,要从大的框架去理解。弄的递归函数的功能是什么,知道他是干什么的,用就行,还有就是寻找到终止条件。代码贴三个不同写法代码,越后面的代码是越开始写的。发现自己真的还有提高空间~代码一/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = nu

2022-02-17 22:49:53 251

原创 剑指 Offer 26. 树的子结构(JavaScript语言)

思路本题要写的函数isSubStructure(A,B)的含义是:判断二叉树B是不是二叉树A的子结构。引入一个函数recur(A,B),其含义为:判断二叉树B是否是二叉树A的子结构,特别规定A的根节点必须和B的根节点相同。1. isSubStructure(A,B)临界条件:如果A为空或者B为空,返回false。返回值要判断二叉树B是不是二叉树A的子结构,就要看3个条件,以下任何一个为true,就返回true。B是不是A的子结构(保证A,B根节点相同)B是不是A的左子树的子结构(保证A.

2022-02-17 17:58:43 273

原创 力扣第14题-最长公共前缀(JavaScript语言)

思路纵向比较。依次从第一个字符串取出一个字符,将这个字符与之后的所有字符串该位置上的字符做比较,如果都有,将其将入到返回值中。代码/** * @param {string[]} strs * @return {string} */var longestCommonPrefix = function(strs) { var res = '';//返回值 for (let i = 0; i < strs[0].length; i++) { let char =

2022-02-17 15:31:07 252

原创 剑指 Offer 32 - III. 从上到下打印二叉树 III(JavaScript语言)

思路在广度优先搜索+每一行分开输出基础上,加一个flag标志,记住是单数行还是双数行。代码/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {number[][]} */var levelO

2022-02-17 00:08:15 159

原创 剑指 Offer 32 - II. 从上到下打印二叉树 II(JavaScript语言)

思路广度优先遍历。但是要记住每一行,就得记住这一行的上一行一共有多少节点。记住i行节点个数sum,第i+1行就是for循环多少sum次。代码/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {n

2022-02-16 23:36:11 168

原创 面试题32 - I. 从上到下打印二叉树(JavaScript语言)

思路广度优先遍历。树的广度优先遍历借助于队列。代码/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {number[]} */var levelOrder = function(root)

2022-02-16 23:30:53 176

Oxford-17.rar

Oxford-17是一个鲜花图像数据集,其中包括1360幅图像,分为17类,每类80幅图像。本个文件夹共有17个文件夹,每一个文件夹都是一类花。

2020-04-19

direct 3d中的dmusici.h

direct 3d中的dmusici.h #ifndef _DMUSICI_ #define _DMUSICI_ #include <windows.h> #define COM_NO_WINDOWS_H #include <objbase.h> #include <mmsystem.h> #include "dmusicc.h"。。。。。。

2019-07-14

空空如也

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

TA关注的人

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