自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CSS选择器

元素选择符:通常是HTML元素.一般就是其中的DOM树中的元素。{color: red orange yellow green blue;}多个属性的取值的时候,同时传入多个取值的时候其中的值是可以按照不同的分隔符号来进行区分的。群组选择符:不同的选择器之间使用逗号分隔!h2,p{color:yellow}其中的逗号是必须要有的,否则对应的是不同的结果。通用选择符:*{}其会匹配到全部的元素,群组声明就是将其中的多个属性的值写在同一个括号内。类选择符:可以特定的一个选择,.{}ID选择符:唯一性.

2021-04-11 12:59:01 154

原创 CSS和文档

层叠样式表是一个强大的工具,能影响一个或者一组文档的表现。其的发展历史都是为了更好的解决浏览器的显示问题的,没有太多的细节值得注意。元素:置换元素:常见的为img标签,也就是内容的部分不由文档内容直接显示。input元素类似,根据类型的不同,会显示不同的内容。非置换元素:元素的内容由用户代里再元素自身的框中显示,大多数的标签都是这样的。div、span等。其它的元素分类方式:块级元素:默认会生成一个填满父级元素内容区域的框,旁不可以由其它元素,框的前后是断行的,行内元素:在一行文本内生成元

2021-04-10 14:08:14 160

原创 C++模板类

1.定义或者是使用模板类:template <typename T>T minimum(const T& lhs, const T& rhs){ return lhs < rhs ? lhs : rhs;}int a = get_a();int b = get_b();int i = minimum<int>(a, b);int i = minimum(a, b);//让编译器自己去推导出对应的类型你也可以指定为任意多个参数的模

2021-03-30 19:51:12 855

原创 JavaScript中this指针

绑定this的方式一共有四种:隐式绑定显式绑定new 绑定window绑定当是下面的对象的时候:const user = { name: 'Tyler', age: 27, greet() { alert(`Hello, my name is ${this.name}`) }}user.greet();等于是实现了下面的代码解析:greet() { // alert(`Hello, my name is ${this.name}`) alert(`

2021-03-29 10:11:25 108

原创 JS中的常见数据类型

Null -> nullUndefined -> undefindeStringNumberBooleanObjectSymbolBigIntJavaScript中的Number的数据是按照双精度浮点数double的数据来进行存储的,所以其会有一个超出范围,双精度浮点数的由三部分组成:符号位、指数位、尾数,其中尾数是省略了最开始的1来进行存储的。提出了一种的新的数据类型:BigIntconsole.log(9007199254740995n); // → 900

2021-03-26 20:07:29 109

原创 面试题30. 包含min函数的栈

面试题30. 包含min函数的栈题目的意思就是说需要实现一个可以返回当前栈中对应的最小值的函数的,实现的思路是使用两个栈,一个是正常的栈,每次正常添加元素,然后每次都将当前栈中最小的元素放在其中,比如刚开始的时候,首先来的元素就是当前的第一个元素,就是当前的最小的,每次来的时候都跟当前最小栈的最顶端的元素进行比较,如果当前的元素小于更小则放入其中的最小栈内,否则继续将原先的栈顶的元素放在里面。实现的语言Javascript,实现的代码如下:/** * initialize your data str

2021-03-26 19:28:48 73

原创 746. 使用最小花费爬楼梯

https://leetcode-cn.com/problems/min-cost-climbing-stairs/示例 1:输入:cost = [10, 15, 20]输出:15解释:最低花费是从 cost[1] 开始,然后走两步即可到阶梯顶,一共花费 15 。示例 2:输入:cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1]输出:6解释:最低花费方式是从 cost[0] 开始,逐个经过那些 1 ,跳过 cost[3] ,一共花费 6 。题意就是当前没

2021-03-24 12:57:52 97

原创 字节跳动2021/3/23面试

1.实现一个排序算法,完成下面序列的排序!var version = [“1.34.5”, “1.23123.10”, “1.1.1”];也就是说,按照每个点对应的数字的大小进行排序,每个点的数字越大对应的数字的结果就是在后面。上面的排序之后的序列应该是:[ ‘1.1.1’, ‘1.34.5’, ‘1.23123.10’ ]实现的代码如下:使用前端的语言JavaScript实现的,重写一个sort的第三个参数函数即可!var version = ["1.34.5", "1.23123.10", "1

2021-03-23 20:58:09 100

原创 剑指 Offer 58 - I. 翻转单词顺序

https://leetcode-cn.com/problems/fan-zhuan-dan-ci-shun-xu-lcof/示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world! "输出: “world! hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: “a good example”输出: “example good a”解释:

2021-03-23 13:32:44 61

原创 剑指 Offer 29. 顺时针打印矩阵

简单顺时针打印矩阵,巧妙的使用上下左右的来记录即可!https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> res; if(matrix.empty(

2021-03-23 11:51:57 50

原创 2020/3/21腾讯前端笔试题目

第一题:前端题目,实现一个无限下拉加载内容的小demo。没有什么难度,不熟练的话很难很快写出来,而且还有很多问题。没写出来。第二题:题目大意是给出一个数字经过三种变换,在最少的步骤中将对应的N值变成为0,变换的方式有三种:如果n是3的倍数,就是将n = n /3。第二种:如果n是2的倍数,可以将n = n / 2;第三种变换就是将n的值减一,现在就是使用这三种方式将将n经过最少的步骤变为0。这个题目是leetcode上的1553的题目,hard难度,自己看吧!不会写。https://leetcode-c

2021-03-22 22:24:25 761

原创 376. 摆动序列

https://leetcode-cn.com/problems/wiggle-subsequence/示例 1:输入: [1,7,4,9,2,5]输出: 6解释: 整个序列均为摆动序列。示例 2:输入: [1,17,5,10,13,15,10,5,16,8]输出: 7解释: 这个序列包含几个长度为 7 摆动序列,其中一个可为[1,17,10,13,10,16,8]。示例 3:输入: [1,2,3,4,5,6,7,8,9]输出: 2题目意思就是必须是交替的出现元素的大小,也就是元素出

2021-03-22 22:17:58 68

原创 面试题 16.26. 计算器

leetcode:https://leetcode-cn.com/problems/calculator-lcci/示例 1:输入: "3+2*2"输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5没什么思路可言,直接上代码!var calculate = function(s) { let prev = 0, num = 0, sum = 0, preOp = '+' s += '&' for(let i=0;

2021-03-22 20:13:17 108

转载 C++中using的用法

转载:using

2021-03-22 17:23:40 124

原创 VScode中使用插件SFTP

一般我们在本地开发之后,代码需要传递在服务器上,或者是合理的利用一下服务器的运行环境资源。不得不将代码上传,但是没有都使用软件Xshell和Xftp上传的话,会很浪费时间,虽然两个软件都比较轻量便捷,这里说一个SFTP的插件可以直接使用其保存并上传!首先必须安装好对应的插件,使用VScode想必肯定知道在哪里安装插件,搜索找到SFTP,安装即可!然后是打开任意一个你需要在本地修改,但是同时也需要在服务器上运行的代码,然后同时按下: Ctrl Shift p后会在VScode中出现一个输入框,输入SF

2021-03-22 15:48:45 394

原创 JavaScript中如何判断判断一个对象是否属于某个类?

首先应该明确一些基本常识也就是typeof是一个一元运算符,其调用的时候可以加括号或者不加括号的。其可以判断一些基本数据类型,同时也会将任意的引用数据类型都返回为Object,其只能很粗略的知道当前的是否为一个对象。instanceof方法:其是可以判断对应的构造函数的 prototype 属性是否出现在对象的原型链中的任何位置。是会在整个对象原型链上去找。function Car(make, model, year) { this.make = make; this.model = mod.

2021-03-21 17:15:12 3178

原创 剑指 Offer 63. 股票的最大利润

题目意思如下:转载复制来自leetcode,侵删!示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。思路:很简单,遍历数组,使用一个最小值来保存当前已经遍历过的区域的最小值min,然后每次遍历到新的地方的时候都使用当前的值去与之前的最小的值相减,判断差值是否大于全局的res结果值,大于则更新,因为每次如

2021-03-21 13:55:21 56

原创 153. 寻找旋转排序数组中的最小值

寻找旋转排序数组中的最小值 https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/  题目的意思是让我们求解其中的旋转后的数组中的元素的最小值,当然数组也可能是没有旋转,也就是说数组是有序的。其实这个题目暴力解答的话时间复杂度也只有O(n)。首先看下面暴力解答的的代码:也就是直接遍历整个数组去找到其中的最小值class Solution {public: int minArray(vector<i.

2021-03-21 13:24:16 57

原创 20213/3/20美团笔试

一共五个题目:第一题是:给定两个字符串,在第一个字符串中去匹配第二个字符串,第一个字符串可以任意重复,求出其中多余的字符个数,如下所示:str1 = abchefghijklmnopqrstuvwxystr2 = meituan比如说这里就是匹配为:abchefghijkl**m**nopqrstuvwxy abch**e**fgh**i**jklmnopqrs**tu**vwxy **a**bchefghijklm**n**opqrstuvwxy去匹配其中的meituan依次出现,你可

2021-03-20 19:24:58 380 2

原创 19. 删除链表的倒数第 N 个结点

题目大意:就是删除其中的倒数第K个节点!思路:自己想的办法是使用快慢指针来解决的,然后使用一个额外的指针来记录当前需要被删除的节点的前一个节点,但是实际上操作难度增加啦!只需要让其中的fast指针少走一步即可!这样的话slow指针当好就是到达了其中的需要被删除的前一个节点。代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Li

2021-03-20 15:26:57 74

原创 剑指 Offer 16. 数值的整数次方

https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/题目就是求解a的b次方的结果返回即可!使用整数幂的思想,满足下面的规则的:2 ^ n = 2 ^(n/2) * 2 ^ (n/2); //当n为偶数2 ^ n = 2 ^ (n -1) * 2; //当n为奇数递归实现即可!其中再n为偶数的时候,需要首先将值保留一份,然后进行乘,不可以写两个递归,否则会超时!实现的代码如下:实现的语言为Javascript;/*

2021-03-15 19:08:59 83

原创 剑指 Offer 57. 和为s的两个数字

https://leetcode-cn.com/problems/he-wei-sde-liang-ge-shu-zi-lcof/简单的两数之和,使用双指针方法,一前一后的方式,如果当前的前后两者的和大于target的时候则将对应的fast的值减少,小于的时候则增加对应的slow指针的值,其实这里不是快慢的问题,直接使用left和right的方式表示更加合适。代码如下:实现的语言JavaScript/** * @param {number[]} nums * @param {number} targ

2021-03-15 18:48:07 76

原创 54. 螺旋矩阵

螺旋矩阵:https://leetcode-cn.com/problems/spiral-matrix/题目的意思是直接螺旋的打印出对应的矩阵的内容,也就是顺时针打印出对应的矩阵的内容。大致的思路就是按照顺时针的思想,使用left、right、down、up四个变量,分别记录矩阵中的开始,每次遍历之后更新其的值,然后每次判断left和right的值的差异多大,只要是满足两者相交的时候直接返回结果即可!实现的代码如下:JavaScript语言/** * @param {number[][]} mat.

2021-03-15 15:34:38 57

原创 27. 移除元素

题目:https://leetcode-cn.com/problems/remove-element/解决方法:双指针。使用语言:Javascript代码如下:/** * @param {number[]} nums * @param {number} val * @return {number} */var removeElement = function(nums, val) { let slowIndex = 0; for(let fastIndex = 0; fast

2021-03-15 11:25:16 47

原创 浏览器渲染过程中什么是重绘和回流?

重绘: 当渲染树中的一些元素需要更新属性,而这些属性只是影响元素的外观、风格,而不会影响布局的操作,比如 background-color,我们将这样的操作称为重绘。回流:当渲染树中的一部分(或全部)因为元素的规模尺寸、布局、隐藏等改变而需要重新构建的操作,会影响到布局的操作,这样的操作我们称为回流。常见引起回流属性和方法:任何会改变元素几何信息(元素的位置和尺寸大小)的操作,都会触发回流。(1)添加或者删除可见的 DOM 元素;(2)元素尺寸改变——边距、填充、边框、宽度和高度(3)内容变化,

2021-03-13 10:47:14 143

原创 CSS 如何阻塞文档解析?(浏览器解析过程)

   理论上,既然样式表不改变 DOM 树,也就没有必要停下文档的解析等待它们,然而,存在一个问题,JavaScript 脚本执行时可能在文档的解析过程中请求样式信息,如果样式还没有加载和解析,脚本将得到错误的值,显然这将会导致很多问题。所以如果浏览器尚未完成 CSSOM 的下载和构建,而我们却想在此时运行脚本,那么浏览器将延迟 JavaScript 脚本执行和文档的解析,直至其完成 CSSOM 的下载和构建。也就是说,在这种情况下,浏览器会先下载和构建 CSSOM,然后再执行 JavaScript,

2021-03-13 10:36:37 399 2

原创 C++位运算

常见的位运算:涉及到位运算的时候,都是将对应的原本的数转换为二进制的数后再操作运算的。1.与运算(&):求解的两个数对应位都是1的时候结果位1否则位0;想要知道二进制数中的某一位是否位1的时候,则只需要将其中的二进制数与对应的位数的十进制数相与即可, 如:1223 & 1000 这样得到的结果中只有第一个的值影响。最常用的是取二进制下的最末位,即a&1。这样的技巧可以用于判断奇偶,根据二进制常识,尾数为1则为奇数,反之为偶数。则是当对应的数是偶数的时候则:a & 1得到

2021-02-25 14:44:23 1375 1

原创 C++排序

选择排序:首先是明确一些函数:然后是弄清楚每种排序算法的思路!void swap(vector<int>a, int i, int j){int t = a[i];a[i] = a[j];a[j] = t;}简单的交换数组中的两个元素的函数实现!1.选择排序:使用下标总是从后面选择出当前最小的元素值,然后使用其的下标与当前的i的值位置的元素进行交换,记住i是最外层循环的值,所以在使用的时候必须将上线设定为:nums.size() -1的值,依次从当前的i的值后面的元素出发依次选

2021-02-25 11:37:13 359

原创 C++基础

C++基础内容C++是在编译的时候进行数据类型检测的,是一种静态数据类型语言、然而在程序运行是检查数据类型的语言则称为动态数据类型。传统的C++语言中的头文件都是使用.h的方式结尾的,然后标准的C++头文件是使用为c开头作为代替。short 只可以限定int,short int 可以省略int的,称为短整数,占用2字节。signed/unsigned 可以限定char、short、int三种数据类型。long只可以限定int 和 double 后续C++11中出现了long long

2021-02-23 21:03:23 55

原创 BFS

BFS所求得一定是最短路径,解决问题的时候只需要将对应的想为一个图即可!大致的代码框架如下:class Solution {public: int minDepth(TreeNode* root) { queue<TreeNode*>q; q.push(root); int depth = 1; if(!root) return 0; while(!q.empty()) { in

2021-02-23 18:17:20 41

原创 回溯算法详解

解决一个回溯问题,实际上就是一个决策树的遍历过程。相应的只是需要思考3个问题:1、路径:也就是已经做出的选择选择列表:也就是你当前可以做的选择。结束条件:到达决策树底层,无法再次继续选择的时候result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: /就把这个当成模板,然后是直接套用即可./ /做选择的时候应该防止

2021-02-22 22:37:38 111

原创 二分查找

二分法:思想是非常简单的,但是细节的地方还是比较困难,很多不同的情况下使用不一样的实现。left = 0 left的值都是初始化为:0代码模块如下:int binarySearch(vector<int>nums, int target) { int left = 0, right = ...; while(...) { int mid = (left + right ) / 2; if(nums[mid] == target) { ...; } else if(n

2021-02-21 20:46:42 60

原创 双指针总结

双指针:可以将其分成快慢指针和左右指针,两者有不一样的应用场景。快慢指针:主要是用于一些判断链表问题的,比如说判断当前的链表是否包含有环存在,这些题目往往使用单个指针是很难解决的。//判断当前的链表是否有环struct ListNode{ struct ListNode *next; int val};bool hasCycle(ListNode* head){ ListNode fast, slow; fast = slow = head; while(fast != NULL &a

2021-02-19 15:31:26 108

原创 单调栈

栈:栈是一种先进后出的结构,是数据结构中比较常见的。单调栈就是维护当前的栈中的内容符合为单调性成立的数据集合,单调递增或者单调递减的布局。单调栈用途不太广泛,只处理一种典型的问题,叫做Next Greater Element单调栈的代码模块如下:vector<int> dailyStack(vector<int> res){ vector<int> ans(res.size()); stack<int> s; for(int i = res.si

2021-02-19 14:12:26 44

原创 BST二叉搜索树问题总结

BST:关键是明白其的中序遍历的方式可以得到对应的序列的增序排列,实现的遍历代码如下:vector<int>res;void traverse(TreeNode *root, vector<int>&res){ if(!root) return; traverse(root -> left, res); res.push_back(root -> val); traverse(root -> right, res);}  上面的代码便可以

2021-02-18 15:05:38 105

原创 二叉树刷题总结

二叉树的一些题目解法总结!在二叉树的时候最重要的是完成对应的框架的总结,我还是比较蠢,到处结合学习,不断学习还是停留在不入门阶段,想通过这些来大概总结一下,不知道是否可以完成一定的提高!leetcode:226 翻转二叉树class Solution {public: TreeNode* invertTree(TreeNode* root) { if(root == NULL) return NULL; TreeNode *cur = root->lef

2021-02-18 14:43:30 107

原创 检查子树//树的子结构//求和路径问题!

三个题目都有着相似的思想!都是需要首先对于当前出发的子节点的结构是否满足对应的性质,然后递归判断当前的树中的剩余的节点是否满足!树的子结构的代码class Solution {public: bool isSubStructure(TreeNode* A, TreeNode* B) { if(!A && !B) return true; if(A == NULL || B == NULL) return false; return

2021-02-17 20:33:27 87

原创 树的子结构

题目如下:题目的目的:也就是判断对应的B树是否是A树的子树,只要是其中的B树是其中的A树的一部分即可!解题思路:应该从根节点出发,依次判断当前A树中的子节点是否于其子树构成了对应的于B完全相同的结果。即首先先序遍历对应的A树,进行判断当前的节点和子树是否跟其中的B的结构完全相同。另外实现一个函数判断当前的B树的结果与A树的子节点的是否相同即可!class Solution {public: bool isSubStructure(TreeNode* A, TreeNode* B) {

2021-02-17 16:45:06 45

原创 递归反转列表问题总结

反转单列表可以使用迭代的方式完成,也可以使用递归的方式实现,前者的实现比较简单,后者的实现有一些难度。同时反转的时候可能只是给出一定区间让你去完成反转。迭代的实现就是找到对应的需要反转的列表的位置然后进行对应的反转,直接使用for循环即可完成操作!将单列表的结构定义为:class ListNode { public: int val; ListNode *next; ListNode(int x) {val = x;} };递归要么是先对于当前的节点功能进行实现,然后依次递归后面的

2021-02-16 11:59:33 738

原创 二叉树总结

二叉树的题目解题的时候无非就是明确当前节点是需要完成什么工作,然后实现当前节点的工作后,然后递归调用对应的左右子树去完成相同的工作。写树相关的算法,简单说就是,先搞清楚当前root节点该做什么,然后根据函数定义递归调用子节点,递归调用会让孩子节点做相同的事情。解题的时候无论是直接操作对应的二叉树得到结果还是去构建一棵新的二叉树,都是首先明确当前的root节点是需要做什么工作,然后再次去递归调用完成对应的子树的结果的处理,最终返回对应的结果子树。...

2021-02-15 21:03:37 60

空空如也

空空如也

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

TA关注的人

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