03 2022 档案
摘要:给出集合 [1,2,3,...,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123""132""213""231""312""321"给定 n 和 k,返回第 k 个排列 来源:力扣(LeetCode)链接:https://l
阅读全文
摘要:对字符串模拟 - 对于字符串来说 - 使用left来记录不重复的最左位置,使用i 遍历s的中每个字符,利用max保存最大长度,判断i- left + 1是否大于当前max值。 特别的,要考虑到字符串为空或者字符串只有一个空格的情况。 class Solution { public int lengt
阅读全文
摘要:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 思路分享:将每一行每一列首行首列元素为否为零进行保存,然后对于i和j元素是否零,如果为零个,就把i和j的首行和首列元素设置为零; 之后遍历首行和首列元素,如果为零,将其所在行和所在列进行
阅读全文
摘要:给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: s = s1 + s2 + ... + snt = t1 + t2 + ... + tm|n - m| <
阅读全文
摘要:有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@
阅读全文
摘要:编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-a-2d-matri
阅读全文
摘要:给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任
阅读全文
摘要:给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/group-anagra
阅读全文
摘要:给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/r
阅读全文
摘要:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/probl
阅读全文
摘要:实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn )。 思路分享:判断n是否为0,然后判断n是或否为偶数,保存x的n/2的次方,如果n为偶数,直接返回t*t,如果为奇数,判断n是否小于0,小于的话,返回1/x* t*t,否则返回t* t * x; class Solution {
阅读全文
摘要:定义一个虚节点,指向head节点,然后遍历cur节点,如果当cur的next不为空且cur的next的val等于cur的val,先将cur = cur的next,然后让其一直循环往下继续遍历。 package com.lhb.nowcode; /** * @author lhb * @date 20
阅读全文
摘要:给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/parti
阅读全文
摘要:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-
阅读全文
摘要:首先计算,节点数为N的红黑树,高度最高为2log(N+1),然后证明逆否命题:高度为h的红黑树,节点数至少有2^h/2 - 1,。 然后我们知道红黑树特性四:在任意一条路径上,黑色节点的数量是都相等,成为黑高,设置bhx,然后红黑树特性五, 表明红色节点的子节点只能是黑色节点,继而证明了bhx>=
阅读全文
摘要:思路:首先定义二维布尔类型的数组,然后初始化i == j 时候的值为true 从长度L为2开始到len,然后i从0到len,j从L + i - 1 i代表字符开始的位置,j代表字符结束的位置 如果s.i== s.j,此时如果L大于3的话,i和j的布尔值依赖于i + 1 和j - 1,如果L小于的话,
阅读全文
摘要:冒泡排序 n2 稳定 空间1 n小比较好 插入排序 n2 稳定 空间1 n小比较好 选择排序 n2 不稳定 空间1 大部分已经排序比较好 快速排序 nlogn 不稳定 空间nlogn n大比较好 堆排序 nlgn 不稳定 空间1 n大时比较好 希尔排序 nlogn 不稳定 空间1 和 归并排序 nl
阅读全文
摘要:1 redis的基本数据结构 字符串key-value最简单的类型String、链表有序列表List、哈希类似于map的一种结构Hash、集合无序集合Set、带权值的无序集合ZSet,即每一个ZSet还有另一个数字表示权值,集合通过权值进行排序。 redis的单线程原理 具体说明的是redis中只有
阅读全文
摘要:现获取道两个字符串长度最长的n,将char类型转化为int类型,设置car来接收进位,然后循环之后,再判断car是否为1,如果为1,用StringBuilde类型来接收,最后在反转一下,调用toString方法返回。 package com.lhb.offer; /** * @author lhb
阅读全文
摘要:给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 package com.lhb.offer; import java.util.Deque; import java.util.LinkedList; /** * @author lhb * @date 2
阅读全文
摘要:// 空间换时间、利用两个栈进行存储,加入时候注意,如果当前值等于最小栈的栈顶元素,也需要加入class MinStack { Stack<Integer> stack1; Stack<Integer> stack2; public MinStack() { stack1 = new Stack<>
阅读全文
摘要:给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3
阅读全文
摘要:给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = "1"countAndSay(n) 是对 countAndSay(n-1) 的描述,
阅读全文
摘要:请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 注意: 一个有效的数独(部分已被填充)不一定是
阅读全文
摘要:给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 分享一下思路:定义一个虚节点dummy,后续节点指向head节点,获取left之前的节点为p和left节点为m和
阅读全文
摘要:给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。 字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是) 题目数据保证答案符合 32 位带符号整
阅读全文
摘要:MVCC 多版本并发控制 主要是在InnoDB存储引擎的读已提交RR和可重复读RR的事务模式下使用。 解决了脏读、幻读、不可重复读问题。解决了读写、读读问题,但是解决不了写写问题。 依靠的是版本链、undo日志、Read View来实现的,在数据库中的表有三个隐藏列,分别是db_trx_id、db_
阅读全文
摘要:将一个16进制的数,统计它的1个个数 思路:遍历字符串,将每一个字符进行判断,每一个字符可以具体表示有多少个1,最后累加即可 public static void main(String[] args) { int sum = 0; Scanner sc = new Scanner(System.i
阅读全文
摘要:N皇后问题,可以用回溯算法解决 但是考虑到45度不能有元素存在 135度不能有元素存在还有一列不能有相同元素存在 终止条件,row==n的时候,需要使用将char【】【】 转化为list添加到List<List<String>> ret 中。 package com.lhb.offer; impor
阅读全文
摘要:其底层实现的用map管理的双向链表,在链表的头部存放最近被访问的,尾部自然就是最近最久未被访问的节点。 其中需要保存的有size、capacity、head、tail、map成员属性 方法有get和put, 初始化的时候,需要设置参数大小,如果不设置的话,默认为10; get方法,需要判断map中是
阅读全文
摘要:在SSM项目当中,所需要的配置文件总共有以下几个 1.web.xml 2.applicationContext.xml 3.springmvc.xml 下面将会依次详细介绍三个配置文件的配置方法以及配置的含义 1.web.xml web.xml是ssm项目当中最重要的一个配置文件,当服务启动时会首先
阅读全文
摘要:在Java中,synchronized的底层原理是通过monitorenter和monitorexit来实现的。monitor可以想象成只能容纳一位客人的房间,每一个线程相当于一个客人,如果房间里面有一个客人,那么其他客人(线程·)就需要在房间外面等待。 在java1.6之后,进行了大量优化,其中对
阅读全文
摘要:基于AQS的 可重入锁:单个线程在执行时,重新进入一个子程序,仍然是线程安全的。(线程a在某个上下文获取到锁,当a线程想要再次获取锁,不会阻塞,只是获取到锁n次,相应的释放锁也需要n次。) 可以实现公平锁和非公平锁。有共同的父类,抽象类,FairSync和NonFairSync是final修饰的。
阅读全文
摘要:全名是Compare and swap ,有三个值,一个内存值,即将更新的值,待更新的旧值。如果旧值与内存值相等的话,才会吧内存值更新的为新值。如果不相等的话,就会进行自旋操作,不断尝试。循环的次数默认为10次。 使用三个线程将count 从0 增加到1000,一般可以使用synchronized保
阅读全文
摘要:算出时针和分针与12点的角度,然后相减,取绝对值。 package com.lhb.baidu; /** * @author lhb * @date 2022/3/13 */ public class TimeAndSecond { public static double angle(int ho
阅读全文
摘要:有输出的学习才是长久有效的学习方式,不管是游戏,套路,语言学习,如果只有输入,没有输出,能学到的知识仅仅只是皮毛,没有从根本上进行思考,就不能掌握一项技能。
阅读全文
摘要:36进制的和 - 面试题目 - bd 主要是对数字和字符之间的转化处理操作,以及StringBuilder的reverse方法和toString方法。 package com.lhb.bytedance; /** * @author lhb * @date 2022/3/12 */ public c
阅读全文
摘要:巧妙利用的是list的下标,不同的位置,加的值不同。 package com.lhb.listnode; import java.util.ArrayList; import java.util.List; /** * @author lhb * @date 2022/3/12 */ public
阅读全文
摘要:package com.lhb.stack;import java.util.Deque;import java.util.LinkedList;/** * @author lhb * @date 2022/3/12 */public class StackTest { public static
阅读全文
摘要:leetcode上面题目 需要运用到快速排序,position方法返回数组此时的数组下标index,如果index的值和nums.length-k == index的话,直接放回nums[index], 如果k < index的话,需要对left、index - 1进行继续划分,否则对index +
阅读全文
摘要:股票的买卖,运用动态规划 每一天的状态有五种: 0 : 不操作 1:第一次买入 2:第一次卖出 3:第二次买入 4:第二次卖出 dp[i][0] 表示第i天的不操作的最大收益 dp[i][1] 表示第i天的第一次买入的最大收益 dp[i][2] 表示第i天的第一次卖出的最大收益 dp[i][3] 表
阅读全文
摘要:62进制-算法 将10进制的long类型转化为有a-z0-9A-Z的62进制,long类型转为String类型。 package com.lhb.bytedance; import java.util.Deque; import java.util.LinkedList; /** * @author
阅读全文
摘要:String、StringBuilder、StringBuffer之间的区别 Stirng类内部维护了final属性的char数组,不可变且不能被继承,不能操作自身,如果操作自身的话,会创建一个新的String对象到常量缓冲区,将原来的引用指向新的String对象。 线程安全的。因为final修饰的
阅读全文