- 博客(21)
- 资源 (1)
- 收藏
- 关注
原创 递归翻转链表
递归的关键确定递归函数的 输入值,功能,返回值,边界条件,而不是跳入递归函数里面一个个分析(你的脑子里能承受几个函数压入栈的分析?)反转链表剑指 Offer II 024. 反转链表head.next.next = head,是为了让当前节点的下一个节点的next指向当前节点head.next = null,则是为了反转链表后头节点的next指向 null(变尾节点了) // 以head为起始节点的链表进行反转,返回反转后的起始节点 function reverseList(he
2021-11-16 19:26:44 451
原创 JavaWeb
前因学校这边安排的实习,使用 Java1.8 + Mysql5.8 + JavaWeb(Servlet,JSP,Tomcat8.5)+ 前端(使用模板)实现人事管理系统环境搭建软件:https://pan.baidu.com/s/10dOsPhIwDLW_-mDKqHG3Ww提取码:5955进入下载好的mysql文件夹,以管理员身份启动命令行 // 若之前有mysql环境,可以先卸载它 mysqld -remove // mysql初始化 mysqld --initialize-
2021-11-01 14:19:52 139
原创 TCP三次握手和四次挥手
TCP & UDPTCP是一个 面向连接的,可靠的,基于字节流 的传输层协议面向连接,双方通信需要先通过 三次握手 建立连接,释放连接通过 四次挥手可靠的, TCP会保证数据包的有序到达,当因为网络不佳等因素导致的 丢包会进行重发,保证其有序到达,因此会导致传输层的队头阻塞产生而UDP是一个 面向无连接 的传输层协议,数据包的传输是 无序的...
2021-10-20 11:28:08 450
原创 2021-10.10-特殊的二叉树
二叉树的属性101.对称二叉树104.二叉树的最大深度111.二叉树的最小深度257.二叉树的所有路径404.左叶子之和513.找到左下角的值112.路径总和二叉树的变换226.翻转二叉树106.最大二叉树617.合并二叉树特殊的二叉树其他222.完全二叉树的节点个数110.平衡二叉树二叉搜索树700.二叉搜索树中的搜索98.验证二叉搜索树530.二叉搜索树的最小绝对差501.二叉搜索树中的众树538.把二叉搜索树转为累加树23
2021-10-10 15:53:39 122
原创 我又回来csdn了
之前在掘金上写文章,一些比较基础的东西,还是在csdn上继续创作吧之前博客地址: https://juejin.cn/user/4195392104709821给自己定下目标,不偷懒,每天总结算法,读书计划,巩固计算机知识
2021-09-26 16:28:01 82
原创 2021.9.25-二叉树的经典递归题型
二叉树的变换226.翻转二叉树226.翻转二叉树一种很经典的递归写法,先进行递归,然后再操作,返回节点var invertTree = function(root) { if (!root) return null; root.right = invertTree(root.left); root.left = invertTree(root.right); return root;};106.最大二叉树106.最大二叉树var con
2021-09-25 17:35:11 105
原创 2021.9.24-dfs和bfs所涉及的问题
遍历二叉树所能求得的属性通过先序 or 中序 or 后序 or 层序(BFS 和 DFS)遍历 方式能求的一棵树的 深度,路径,判断二叉树是否对称,平衡等,叶子节点之和 等属性BFS & DFS的变体应用101.对称二叉树101.对称二叉树注意递归配合 逻辑运算符的使用 实现(无敌)root.left.val === root.right.valroot.left.left.val === root.right.right.valroot.left.right.val ==
2021-09-24 11:30:17 114
原创 2021-09-23-二叉树的前,中,后序遍历所涉及的问题
二叉树的遍历问题有递归实现,非递归,颜色标记法模拟函数栈实现144. 二叉树的前序遍历94. 二叉树的中序遍历145. 二叉树的后序遍历由任意两个序列从而去推导出二叉树是如何构成的从中序与后序遍历序列构造二叉树105. 从前序与中序遍历序列构造二叉树889. 根据前序和后序遍历构造二叉树...
2021-09-23 11:26:57 193
原创 2021-09-18-星号与空格组成几何图形
欢聚校招一面编程题 - 打印正等腰三角形print(line)能打印等腰三角形,挺简单的题目的,但当时呢也不知道是因为紧张还是啥,星号数量为2 * (line) + 1倒是分析出来且实现了,但是那个空格数量我就有点脑抽了,前后各有1个空格(有点(╬▔皿▔)啊),先统计一边空格数,line - 1 - i,i从0开始print(3) 则打印用星号组成的等腰三角形/* print(3); * *** ******/function print(line) { le
2021-09-18 19:32:44 299
原创 2021-09-16-满足整数之和为target的题型总结
1. 两数之和给定一个整数数组 nums 和 目标值 target,请你在数组中找出两个整数之和为 target 对应的数组下标假设每种输入都只会有一个答案nums = [ 1,1,1,1,4,5 ] ,target = 6 这种情况是不可能存在的数组中同一个元素不能再答案中重复出现一次for循环 + hashTable来完成时间复杂度O(n),空间复杂度O(1) /** * @param {number[]} nums * @param {number} targe
2021-09-16 15:35:54 261
原创 2021-09-16-007. 数组中和为 0 的三个数
007. 数组中和为 0 的三个数给定一个有n个元素的整数数组,判断nums中是否存在三个元素 a 和 b,c 使得 a + b + c = 0 ?,请找出所有和为0的不重复三元组如何找到这三个数呢 ?(三个for循环,那也太浪费性能了)如何保证结果数组存储的是 不重复的三元组之前做过一题排序数组中两个数字之和,用双指针去解决,此题虽然是三个数字,但可以通过外层用for循环来对应一个数字,内层用双指针来解决,而且需要先将此数组进行排序用JS内置的sort方法排序数组(升序)再用f
2021-09-16 11:05:49 126
原创 2021-09-15-006. 排序数组中两个数字之和
006. 排序数组中两个数字之和给定一个 升序排列(可能会有重复元素) 的整数数组numbers,请你从数组中找出两数之和为 target 的数组元素对应的下标假设数组中存在且只存在一对符合条件的数字,同时一个数字不能使用两次返回的答案是一个数组,0 <= answer[0] < answer[1] < numbers.length两个for循环(时间复杂度O(2n => n),空间复杂度为O(n))第一次用 hashTable 来存储所有数组元素第二次
2021-09-15 21:38:02 141
原创 2021-09-12-005. 单词长度的最大乘积
005. 单词长度的最大乘积给定一个字符数组 words,请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时,它们长度的乘积的最大值字符串中只包含小写字母若没有符合条件的,返回0思路i从0开始遍历 wordsj = i + 1遍历后续的与words[i]进行比较,判断两字符是否含有相同的字符/** * @param {string[]} words * @return {number} */var maxProduct = function(
2021-09-12 11:41:35 53
原创 2021-09-07-003. 前n个数字二进制相加
003. 前n个数字二进制相加既然需要统计0~n的二进制中1的个数,遍历一次是逃不了的,即O(n)按照十进制转二进制的方法来个while循环模拟因为后面的数字可以拆分成前面的数字,而前面的数字已经求得二进制中1的个数,正好利用上 /** * @param {number} n * @return {number[]} */var countBits = function(n) { let res = new Array(n); // 1. 依次遍历,将每个数转二进制
2021-09-07 10:34:27 113
原创 2021-09-07-002.二进制加法
002.二进制加法解此题关键在于给出的两数位数可能不相同,因此需要用一个add来记录前一位的进位情况每一位相加都是由进位add,一个数的aEle,另一个数bEle组成/** * @param {string} a * @param {string} b * @return {string} */var addBinary = function(a, b) { let aIndex = a.length - 1; let bIndex = b.length - 1;
2021-09-07 09:17:33 157
原创 2021-08-30-001.整数除法
001.整数除法leetcode链接题目要求不允许使用语言中内置的 /,*,% 去实现,实现思路如下如:15 / 2 = 7 … 1 => 15 - 2 * 7 = 1,因此首先可以使用减法来实现,但当被除数为n,除数为1时,n就需要减去n次的1,即需要遍历n次,最坏的时间复杂度为O(n)/** * @param {number} a * @param {number} b * @return {number} */ var divide = function(a, b) {
2021-08-30 17:00:15 118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人