Vue复习之旅-指令篇
不同点
v-text:只能渲染纯文本,浏览器不会对其进行 html 解析
v-html:用于输出 html,浏览器会解析 html
下面通过代码实例来验证,代码如下:
1234567891011121314151617181920212223242526272829303132333435<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Vue Demo</title></head><body> ...
剑指 Offer 63. 股票的最大利润
剑指 Offer 63. 股票的最大利润
题目描述:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?
示例:
输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格
输入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
思路:首先找到前n项最小的作为min,计算下一项与min的差值是否最大
代码:123456789var maxProfit = function(prices) {var min=prices[0],sum=0;for(let i=1;i<prices.length;i++){ min=Math.min(min,prices[i]); sum=Math.max(sum,prices[i]-min)}return sum};
剑指 Offer 58 - II. 左旋转字符串
剑指 Offer 58 - II. 左旋转字符串
题目描述:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串”abcdefg”和数字2,该函数将返回左旋转两位得到的结果”cdefgab”。
示例:
输入: s = “abcdefg”, k = 2输出: “cdefgab”
思路:使用字符串的slice()
代码:1234567891011var reverseLeftWords = function(s, n) {// let rotate = s.slice(0,n);// return s.slice(n,s.length+1)+rotate // 可以直接简写为 //return s.slice(n).concat(s.slice(0, n)); // 甚至不需要 concat() 方法 return s.slice(n) + s.slice(0,n); };
剑指 Offer 32 - I. 从上到下打印二叉树
剑指 Offer 32 - I. 从上到下打印二叉树
题目描述:从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印
示例:
给定二叉树: [3,9,20,null,null,15,7],
输出:[3,9,20,15,7]
思路:借助队列先进先出对二叉树进行遍历
代码:12345678910111213var levelOrder = function(root) { if (root === null) return [] let queue = [] queue.push(root) let result = [] while(queue.length > 0) { let node = queue.shift() result.push(node.val) if (node.left !== null) queue.push(node.left) if (node.right !== null) queue.push(node.right) & ...
剑指 Offer 49. 丑数
剑指 Offer 49. 丑数
题目描述:我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。
示例:
输入: n = 10输出: 1 2 3 4 5 6 8 9 10 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
思路:下一个丑数是由数组中某个丑数A * 2,B * 3,C * 5中的最小值得来的。在数学上的意思,丑数,肯定是之前的一个丑数(2 || 3 || 5 )只要找到比现在大的就行开辟数组保存每个下标的丑数。不断更新factor2 factor3 factor5* 的下标,一旦等于了向前挪一个,就会变成大于了,然后再次看这三个数的大小
代码:123456789101112var nthUglyNumber = function(n) { if(n==0) return 0 var uglys=[1]; var factor2=0,factor3=0,factor5=0; for(var i=1;i<n;i++){ ...
剑指 Offer 47. 礼物的最大价值
剑指 Offer 47. 礼物的最大价值
题目描述:在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?
示例:
输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物
思路:简单的动态规划。类似于青蛙跳台阶,分情况分析明确之后就很容易做了。以测试用例为例,棋盘大小m=3,n=3,即grid;如下图:第一步:构建一个与棋盘相当的二维数组,代表移动到每个棋盘格上时此处的最大礼物价值,即value;如下图:由上图可得,价值棋盘共有4中情况:
左上角,即value[0][0] == grid[0][0];因为这是开始端
当m = 0 , 即第一行value[0][n] ; 只能从右侧移动过来,所以公示为: value[0][j] = value[0][j
1] + grid[0][j] ; j代表当前列
当n = ...
剑指 Offer 07. 重建二叉树
剑指 Offer 07. 重建二叉树
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
示例:
例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]
返回如下的二叉树:
思路:二叉树前序遍历第一个点为根节点,中序遍历顺序为先左子树然后根节点最后右子树。所以先通过前序遍历找出根节点,然后将中序遍历分为左右子树两组,最后对于每个子树依次递归调用。
代码:123456789101112var buildTree = function(preorder, inorder) { if(preorder.length==0 || inorder.length==0) return null; var index=inorder.indexOf(preorder[0]); var left=inorder.slice(0,index);//中序左子树 var right=inorder.slice(index+1);/ ...
剑指 Offer 56 - I. 数组中数字出现的次数
剑指 Offer 56 - I. 数组中数字出现的次数
题目描述:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
示例:
输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]
输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]
思路:使用对象或者Map(本处用对象)记录每一个数字出现次数,遍历对象或者Map,然后再找出出现次数为1的数字并放入一个新数组中即可。
代码:12345678910var singleNumbers = function(nums) { let obj = {}; for(let i=0;i<nums.length;i++){ obj[nums[i]]?obj[nums[i]]++:obj[nums[i]]=1; } let result = []; for(k in obj){ ...
剑指 Offer 30. 包含min函数的栈
剑指 Offer 30. 包含min函数的栈
题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。
示例:
MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); –> 返回 -3.minStack.pop();minStack.top(); –> 返回 0.minStack.min(); –> 返回 -2.
思路:两个栈:一个栈存放全部的元素,push,pop都是正常操作这个正常栈。另一个存放最小栈。 每次push,如果比最小栈的栈顶还小,我们就push进最小栈,否则不操作每次pop的时候,我们都判断其是否和最小栈栈顶元素相同,如果相同,那么我们pop掉最小栈的栈顶元素即可
关键点:往minstack中 push的判断条件。 应该是stack为空或者x小于等于minstack栈顶元素
代码:1 ...
剑指 Offer 35. 复杂链表的复制
剑指 Offer 35. 复杂链表的复制
题目描述:请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。
示例:
输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]
输入:head = [[1,1],[2,1]]输出:[[1,1],[2,1]]
输入:head = []输出:[]解释:给定的链表为空(空指针),因此返回 null。
思路:参考链接:https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof/solution/jian-zhi-offer35fu-za-lian-biao-de-fu-zhi-by-lisa-/
代码:1234567891011121314151617181920212223var copyRandomList = fun ...