- 博客(117)
- 收藏
- 关注
原创 LeetCode刷题目录
每天花一点时间刷算法题,自6.17开始刷LeetCode提上征程,争取每天做一道题……实话说我也知道到能不能够坚持下来,合并两个有序数组字符串相加无重复最长字串比较版本号下一篇 两数之和...
2021-06-18 10:33:16 88
原创 box-sizing的类型
来源: 这两个属性我一直有点糊涂; 但是有没有实际的场景让我尝试,这次遇到了,就记录下来……利用elementUI的form组件form占整个,想让左右有点间距想到利用padding; 但是padding会撑开盒子,需要让padding计算在width之内。注意此时的宽度490px; elementUI组件的form组件默认box-sizing:类型是content-box;即width = 自身的width + padding + margin + border; 也就是说设置了padding.
2021-07-11 15:54:42 168
原创 二叉树的前序遍历
前序遍历前序遍历:根 --》左 --》 右一、递归var preorderTraversal = function(root) { const res = []; dfs(root); return res; function dfs(root) { if (root == null) return; res.push(root.val); dfs(root.left); dfs(root.right).
2021-07-10 14:26:29 99
原创 数组去重实现的方式(越多越好)
const arr = [1, 1, '1', 17, true, true, false, false, 'true', 'a', {}, {}];想要的结果=> [1, '1', 17, true, false, 'true', 'a', {}, {}]
2021-07-09 21:01:36 71
原创 判断链表是否有环
判断链表是否有环无论利用哪种方法,特判还是需要的,没有节点,或者只有一个节点说明一定是没有环,方法一:利用数组判断类似哈希表,每次将头结点插入数组中,头结点指向下一个位置,判断在数组中是否存在当前节点,如果存在就说明存在环的。不存在就没有换。var hasCycle = function(head) { if (head == null || head.next == null) return false; const res = []; while (head) {
2021-07-09 19:34:55 82
原创 你能想到几种方式实现数组扁平化(越多越好)
数组扁平化:将一个多维数组,展开成一个一维数let arr = [1,[2,3],[4,[5,6,[7]]],8]; ⇒ [1,2,3,4,5,6,7,8]数组中嵌套数组自然会想到利用递归来做,只要里面还是数组就一直向里面探索,这里就涉及到如何判断一个是不是数组,或者判断数组有几种方式方式1 递归function myFlat(arr) { const res = []; for (let i = 0; i < arr.length; i++) {
2021-07-09 09:30:38 111
原创 最大连续1的个数
最大连续1的个数转换成:找出一段最大区间,使得里面0的个数不超过k个。参考大佬的题解var longestOnes = function(nums, k) { let zeroCount = 0, left = 0, len = nums.length, res = 0; for (let right = 0; right < len; right ++) { if (nums[right] == 0) zeroCount ++; whi.
2021-07-09 09:00:46 75
原创 需要多少次找出较轻的小球
来源有二十个小球,其中一个比较轻,有一个天平,最快能用多少次称出来?思路:整体不能够想着均分,从不均分角度来考虑。第一次(1):分成三组,每一组分别是,7 7 6看看,7 vs 7结果怎样,(1.1)如果两者重量相同,那么,这两组的14个小球直接pass,就在另一组的6个小球中选择较为轻的小球。第二次:(1.1.1),将6分成2 2 2(a,b,c);任意取出两组进行比较,假设取出来的是a,b; 如果 a = b; 结果一定在c中,将c的两个求再次比较一下即可。(1.2)如果两者不同,取出较.
2021-07-07 16:27:02 329
原创 根据前序和中序构造整个二叉树
根据前序和中序构造整个二叉树前序遍历:根 左 右中序遍历:左 根 右先根据前序遍历,得到根节点3,然后看中序遍历,可以知道9是3的左孩子[15,20,7]是3的右孩子再去先序遍历的到9,再到中序遍历可知,9左右孩子都为空,再根据前序遍历得到根节点20,再根据中序遍历得到20的左子树是15, 右子树是17;总结: 先根据先序遍历得到根节点,在去中序遍历中根据根节点找到左右两个子树。重复上述步骤即可思想有了,代码实现起来还是……有点问题为了能够快速在中序遍历得到根
2021-07-05 14:01:21 357
原创 二叉树的中序遍历
二叉树的中序遍历递归中序遍历: 左 -》中 -》 右var inorderTraversal = function(root) { var res = []; dfs(root); return res; function dfs(root) { if (root == null) return; dfs(root.left); res.push(root.val); dfs(root.right);
2021-07-05 12:07:18 67
原创 Flex练习-打游戏
引言:因为学了flex布局,但是不知道怎么使用,虽然知道做项目是很好的方式,但是还是不知道如何下手如果你是零基础,推荐先看看这个:Flex语法如果你觉得学的还可以,但是不知道怎么去验证,这里就很适合你 flex练习网址:可能会遇到的阅读障碍properties 属性(复数)cross axis 交叉轴main axis 主轴group items 项目(里面的东西)group container 容器(外面的大盒子)align 排列evenly 均匀地第1关:主要介绍just.
2021-07-04 20:20:45 212 1
原创 0-n-1中缺失的数字
0-n-1中缺失的数字一共N个数范围在0 ~ n-1 之间; 但是数组的长度只是n - 1 所以有一个数缺失了,找出那个缺失的数字、有两个关键信息;数组是有序的,递增数字都是唯一的,就少一个数字二分需要先将特殊情况排除掉;数组为空前 n - 1个数都是正确的下标是[0, n - 2],缺少最后一个数var missingNumber = function(nums) { if (nums === null) return 0; let len = nums.len
2021-07-03 21:35:17 112
原创 外边距塌陷问题
出现的问题,不能够重现,接下来有很大的可能还会出现……并且不知道怎么解决设置登陆界面出现外边距塌陷的情况,基本骨架如下<div id="app"> <div class="login-group"> <div class="login-info"> <h3>登陆界面</h3> <form action=""></form> <
2021-07-03 20:22:41 60 1
原创 Flex布局实现筛子3
火花就在一瞬间,抓住它,温故而知新……6.用 flex 实现下图效果。容器宽高不定,子元素宽高固定?刚看一眼以为很简单,但是……因为不能够设置父级盒子的高度并且没有想到设置主轴的方向,所以总是撑不开父级元素,总是在一行显示父级沿着主轴的排列方式是否换行简写形式存在剩余空间时候子项目的排列方式我觉得这张图描述的就非常生动项目的特殊/省略写法flex: flex-grow flex-shrink flex-basic;第三个如果是auto的话设置的width就有效 如果不是aut
2021-07-03 19:12:05 459 1
原创 React基础使用
react基本使用安装react相关的包npm install [email protected] @[email protected]、引入js文件 注意顺序<script src="./node_modules/react/umd/react.development.js"></script><script src="./node_modules/react-dom/umd/react-dom.development.js"></script>02、
2021-07-03 16:02:00 68 1
原创 二叉搜索树第k小元素
二叉搜索树第k小元素二叉搜索树的中序遍历是一个递增的序列(左根右)中序遍历完整二叉搜索树,每次将遍历到的节点存入数组中去,找到第k - 1个节点返回即可k是从下标1开始的,存到结果数组res中,但是下标是从0开始的.这个样例res = [1,2,3,4,5,6]时间复杂度O(n) n 表示有多少个节点中序遍历二叉搜索树k次,返回第K次结果;时间复杂度:O(k)var kthSmallest = function(root, k) { // 中序遍历 根左右 c
2021-07-01 20:28:37 75
原创 x的平方根
x的平方根求平方根不使用 Math.sqrt() 上代码:var mySqrt = function(x) { let l = 0, r = x; while (l < r) { let mid = l + r + 1 >> 1; if (mid <= Math.floor(x / mid)) l = mid; else r = mid - 1; } return r;};...
2021-06-30 15:14:32 85
原创 亲密字符串
给了很多的样例,总结一下如果两个字符串长度不一样,直接false; 样例5如果两个字符串一样,只要有一个字符是重复的就可以通过交换使得s == goal 这样就能够满足条件。样例2和3(*) 判断一个字符出现的次数。如果两个字符串不一样,记录不一样的下标,可以通过交换下标使得对应值相等这里对于步骤2做一些说明, 但是想通过哈希表来实现,但是技术太菜,没能实现,看了评论区,还有大佬就本题而言直接用一行代码搞定return s.length > new Set(s).sizefunc..
2021-06-29 22:01:45 130
原创 旋转字符串
旋转字符串将字符串a中的每一个字符添加到a的结尾,比较a和b是否相同var rotateString = function(s, goal) { if (s === "" && goal === "") return true; let len = s.length - 1; let i = 0; while (i < len) { s = s.slice(1) + s.slice(0,1); if (s ===
2021-06-29 18:30:05 51
原创 验证回文字符串
验证回文字符串||最多删除一个,表示要是字符串本身也是回文字符串的话也是可以的,字符串中只包含小写字母,就不用转换或者剔除不满足条件的,直接判断即可判断回文字符串的话,用两个指针从两头枚举,如果遇到的字符不相等就判断从[i + 1, j] 干掉s[i] 或者 干掉s[j] 判断[i, j - 1]之间是不是回文字符串。function check(s, l, r) { while (l < r) { if (s[l] == s[r]) {
2021-06-29 17:57:07 93
原创 Lc5-最长回文字串
Lc5-最长回文子串js 求数组求字符串的长度都是length方法js 字符串截取,var longestPalindrome = function(s) { let res = ''; for (let i = 0; i < s.length; i ++) { let l = i - 1, r = i + 1; sub(l, r); l = i, r = i + 1; sub(l, r); fu
2021-06-29 14:22:42 109
原创 二叉树的最大深度
考过二叉树的最大深度二叉树的最大深度 = 等于左右二叉树最大深度 + 1,然后递归处理左右子树即可var maxDepth = function(root) { if (root == null) return 0; return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;};n叉数的最大深度var maxDepth = function(root) { if (root == null) r.
2021-06-29 13:32:02 138
原创 和为s的两个数字 - 双指针
题目:和为s的两个数字有序第一上来,想到的是二分,但是没有实现,看了题解 双指针,很好理解重要的是数组有序设置两个指针分别指向数组的开头i和结尾j,如果当前两个指针指向的值比目标值大nums[i] + nums[j] > target ,又因为数组是递增的,所以为了更接近目标值只能够将i ++ 这样才能够更接近目标值。否则j --var twoSum = function(nums, target) { let i = 0, j = nums.length - 1; le
2021-06-29 13:02:21 45
原创 经典的二分查找
二分查找模板题,一些边界条件特别多的适合模板题,30s秒了var search = function(nums, target) { let l = 0, r = nums.length; while (l < r) { let mid = l + r >> 1; if (nums[mid] >= target) r = mid; else l = mid + 1; } if (nums[l] !=
2021-06-29 12:18:49 42
原创 将本地文件push到gitee上面
说明:这篇文章不适合小白,也不适合大佬,只是自己学习路上的一些记录,很容易就忘记了……github太卡,退而求其次gitee也不错,目前阶段完全够用。背景与需求现在有一个elemeui的项目,想将它上传到gitee上面,借助sourcetree实现(sourcetree将一些命令转化为鼠标的操作)打开gitee,新建一个仓库,命名和本地名称一致gitee暂时放到一边,打开sourcetree,如下图所示成功的标志是左侧远程有个origin选项重新刷新一下远程仓库……背
2021-06-28 20:44:13 337 1
原创 逆序对的数量
逆序对的数量模板题,在归并排序的基础上暴力做法会超时,function merge_sort(a, l, r) { if (l >= r) return 0; let mid = l + r >> 1; let res = merge_sort(a, l, mid) + merge_sort(a, mid + 1, r); let tem = [], i = l, j = mid + 1; while (i <= mid &&a
2021-06-28 09:46:29 39
原创 Lc169多数元素
题目:多数元素思路:人多就是硬,把所有的数分为两个部分,多数元素为一个部分,其他元素为一个部分,两者相互抵消,最后剩下的数一定是步骤:r表示目标元素, c表示目标元素的个数遍历数组的时候,维护r和 c如果当前元素不等于目标元素nums[i] != r, 个数c --当c的个数为0的时候,将r换成nums[i] ,如果当期元素等目标值,个数c++代码实现var majorityElement = function(nums) { let r = nums[0], c = 1;
2021-06-27 10:50:36 59
原创 Lc92 翻转链表
Lc92 翻转链表var reverseBetween = function(head, m, n) { // 可能翻转头结点 头结点会变 创建虚拟头结点 dummy 从虚拟头结点条m - 1 // 1、将m到n之间的链表翻转 就是怎么找到m的前一个节点 循环m - 1次 let dummy = new ListNode(-1); dummy.next = head; let a = dummy; for (let i = 0; i < m
2021-06-26 21:39:00 48 1
原创 CSS选择器的优先级计算
一、引言:这个问题,实际开发我们肯定遵循以“越具体 权重越高”为原则,所以一般不会出现这样的问题,即便出现了问题也知道该怎么解决,但是笔试,或者面试这种题很容易出现这种题,对于我来错出错率特别高!所以整理一下二、知识储备:说出你知道的选择器:idclass 伪类 属性选择器伪元素选择器 标签选择器通配符 子代选择器 后代选择器权重的计算规则1、!important,加在样式属性值后,权重值为 100002、内联样式,如:style=””,权重值为10003、ID选择器,如:
2021-06-26 19:44:46 133 1
原创 Lc206翻转链表
Lc206翻转链表迭代版本;var reverseList = function(head) { if (head == null) return null; let a = head, b = a.next; while (b) { let c = b.next; b.next = a; a = b; b = c; } head.next = null; return a;};递归
2021-06-25 23:22:27 78
原创 页面之间的跳转与交互
前言:想写这篇的原因,学到location对象以及之前大web大作业,想实现多个页面之间的跳转只能够通过a标签来实现,但是有些地方只用a标签显然是不够的,最终还是没有解决,全都是使用a标签……现在可以通过其他方法<div id="app"> <p> <a href="B.html">链接方式跳转到B页面</a> </p> <button type="button">location.href方式跳转到其他页面<
2021-06-24 18:34:23 856 1
原创 Lc1047删除字符串中所有重复项
删除字符串中所有重复项利用栈来存储,遍历字符和当前栈顶元素进行比较,如果栈不为空stack != null,并且等于遍历到的当前元素 == 栈顶元素value = stack[stack.length - 1],就把栈顶元素弹出stack.pop()否则压入栈中stack.push(value)var removeDuplicates = function(s) { let stack = []; for (value of s) { if (stack !=
2021-06-24 15:27:51 40
原创 Lc24两两交换链表
两两交换链表p指针指向交换两个节点的前一个节点步骤如图,但是代码2.3需要交换位置。var swapPairs = function(head) { let dummy = new ListNode(-1); dummy.next = head; for (let p = dummy; p.next && p.next.next;) { let a = p.next, b = a.next; p.next = b;
2021-06-24 14:29:55 52
原创 Lc1013将数组分成相等的三个部分
Lc1013将数组分成相等的三个部分第一想法就是看看数组所有和是不是能够被3整除,但是i + j < j这个条件没有用上所以感觉不对,但还是提交了,因为想不出出来其他的例子,让编译器给个提示,然后就有这个了[0,2,1,-6,6,7,9,-1,2,0,1] 总和sum = 21 但是前面一段找不到和为7的一个子段。var canThreePartsEqualSum = function(arr) { let sum = 0; for (let i = 0, len = arr.le
2021-06-24 10:49:31 59
原创 Lc151翻转字符串里的单词
翻转字符串里的单词差一点就做出来,一开始用空格拆分单词,但是这个样例the sky is blue 没有通过,单词之间有多个空格的情况,然后看了评论区……学了一个正则表达式/\s+/这是正则表达式。\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。+匹配前面的子表达式一次或多次。split( )分割字符串函数;var reverseWords = function(s) { let res = s.trim().split(/\s+/).reve
2021-06-24 09:24:03 48
原创 二叉搜索树的最近公共祖先
二叉搜索树的最近公共祖先二叉搜索树所有右子树的节点都比左子树节点大,仔细观察给的二查搜索树是不是满足这个条件,按照前序遍历能够组成一个有序的序列分情况讨论:1. 两个节点不在同一侧,一个在左子树,一个在右子树,最近公共祖先就是根节点。2. 两个节点都在左子树上面,只用递归左子树就好3. 两个节点都在右子树上面,只有递归处理右子树if (p.val <= root.val && q.val > root.val)return root;var lowestC
2021-06-23 21:10:29 140
原创 Lc866回文素数
Lc866回文素数样例1:input: 6output: 7样例2:input: 8output: 11样例3:input: 13output: 101一个偶数位的回文数一定是 11 的倍数 这个性质不知道一般做不出来;知道这个就能够将所有位数为偶数的数字判断出来。处理奇数位,只处理一半,可以将时间复杂度从o(n)变成O(sqrt(n)),将123变化后结果应该是12321 传入的是一个数字,转为字符串a。本来我想直接a.reverse()一下,但是报了a
2021-06-23 20:30:51 173
原创 Lc123验证是不是回文序列
Lc123验证是不是回文序列提取里面所有的字符串,统一转换成小写/大写利用两个指针从两头依次判断这是我 自己没看题解做出来的,var isPalindrome = function(s) { let tem = ''; for (let i = 0; i < s.length; i ++) { if (s[i] >= 'a' && s[i] <= 'z' || s[i] >= '0' && s[i] <
2021-06-23 18:51:33 223
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人