- 博客(19)
- 收藏
- 关注
原创 2023.1.7 哈希表
(1)1512. 好数对的数目(2)2006. 差的绝对值为 K 的数对数目(3)1347. 制造字母异位词的最小步骤数(4)面试题 10.02. 变位词组。
2023-01-07 15:17:29
112
原创 2013-1-5 双指针
双指针是一种思想不是一种具体的算法就是用两个变量动态存储两个结点常见的双指针方式有:同速指针、快慢指针(判断链表里面有没有环)
2023-01-05 18:49:37
136
原创 Mysql忘记密码如何修改密码
第十步:运行下面命令后,提示输入password,直接回车进入。因为密码已经被置空了。每行语句都不带分号结束,让电脑去检查语法错误。但是需要在下一行加上英文状态下的分号。如果有表格显示,就说明没有错误。
2022-11-05 15:59:19
158
原创 剑指 Offer II 005. 单词长度的最大乘积
剑指 Offer II 005. 单词长度的最大乘积 给定一个字符串数组 words,请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时,它们长度的乘积的最大值。假设字符串中只包含英语的小写字母。如果没有不包含相同字符的一对字符串,返回 0。示例 1:示例 2:数据范围:三、自己的思路 (1)遍历数组,用哈希表判断两个字符串是否有相同的字符 (2)再找出最大值,并返回 (2)时间复杂度是log(n*(n-1))
2022-06-30 14:38:50
112
原创 JAVASE-面向对象(二)
数值类型:不一定要求数据类型严格相同,只要两个变量的值相等就返回true。引用类型:只有指向同一对象时,才会返回true。==不可以用于比较类型上没有父子关系的两个对象。equals()方法是Object类提供的一个实例方法,所有引用变量可以调用该方法来判断是否与其他引用变量相等。两个引用变量指向同一个对象才会返回true。final修饰的成员变量必须由程序员显式地指定初始值。final修饰局部变量时,既可以在定义时指定默认值,也可以不指定默认值。final只保证这个引用类型变量所引用的地址不会改变,即
2022-06-25 16:38:27
105
原创 算法-搜索二叉树
给定一个某二叉搜索树的先序遍历序列,构造出一颗二叉搜索树 1. 首先,考虑先序遍历的访问顺序:根节点->左子树->右子树,所以第一个节点一定是根节点; 2. 然后,数组往后遍历的过程中,遇到的所有小于当前根节点的节点,都必然是左子树上的节点,后面的节点必然是右子树的节点; 3. 如果检测到后面的节点有比当前根节点小的,则这个序列无法构造出一颗二叉搜索树; 4. 遍历找到左右子树的分界点后,就可以进行左右子树递归计算了,注意递归时返回构造完的子树
2022-06-20 23:10:16
130
原创 算法-二叉树
遍历顺序:根节点->左子树->右子树2. 中序遍历遍历顺序:左子树->根节点->右子树后序遍历遍历顺序:左子树->右子树->根节点层序遍历遍历顺序:按照层次的顺序从根节点向下逐层进行遍历,且对同一层的结点为从左到右遍历。这个过程和BFS很想,因为BFS进行搜索总是以广度作为第一关键词,而对应到二叉树中,广度又恰好体现在层次上,因此层次遍历就相当于是对二叉树从根节点开始的广度优先搜索。基本思路如下: (1) (2) (3) (4)
2022-06-20 20:01:08
107
原创 算法--树
子树:树是一个有限集合,子树则是该集合的子集。就像套娃一样,一棵树下面还包含着其子树。比如,树T1 的子树为 树T2、T3、T4,树T2的子树为 T5、T6. 上图中还有许多子树没有标记出来。结点(Node):一个结点包括一个数据元素和若干指向其子树分支。比如,在树T1 中,结点A 包括一个数据元素A 和 三个指向其子树的分支。上图中共有 17 个结点。根结点(Root):一颗树只有一个树根,这是常识。在数据结构中,“树根”即根节点。比如,结点A 是树 T1 的根结点;结点C 是树T1 的子结点,是树 T3
2022-06-19 22:21:12
164
原创 JAVASE(一)
this关键字总是指向调用该方法的对象。根据this出现位置的不同,this作为对象的默认引用有两种情形。 1. 构造器中引用该构造器正在初始化的对象; 2. 在方法中引用调用该方法的对象。this关键字最大的作用就是让类中的一个方法,访问该类里的另一个方法或实例变量。Dog.javaDogTest.java大部分时候,一个方法访问该类中定义的其他方法、成员变量时加不加this前缀的效果是完全一样的。注意: 对于static修饰的方法而言,则可以使用类来直接调用该方法,如果再
2022-06-18 21:23:52
117
原创 算法--矩阵
(1) 面试题 01.08. 零矩阵 (2) 73. 矩阵置零 (3) 1727. 重新排列后的最大子矩阵 (4) 1034. 边界着色 (1) 遍历题目给的矩阵,记录下值为0的矩阵的横纵坐标; (2)再遍历一遍,把相应的列和行的元素置为0。2. 矩阵置零 (1) 跟上面那道题一样,copy过来就好了; (2) 也可以先复制一个跟原矩阵一样的矩阵temp。再遍历矩阵temp,找到为0的值,把题目给
2022-06-12 00:39:21
205
1
原创 算法-哈希表
unordered_map是一个关联容器,内部采用的是hash表结构,拥有快速检索的功能 它的键值分别是迭代器的first和second属性。二、练习题目 (1) 442. 数组中重复的数据 (2) 2068. 检查两个字符串是否几乎相等 (3) 2283. 判断一个数的数字计数是否等于数位的值 (4) 884. 两句话中的不常见单词 (1) 用一个哈希表存入每个数字出现的次数; (2)再遍历哈希表,出现
2022-06-07 20:17:23
228
原创 算法-滑动窗口
滑动窗口算法可以用以解决数组/字符串的子元素问题,它可以将嵌套的循环问题,转换为单循环问题,降低时间复杂度。 (1)1984. 学生分数的最小差值 (2)1763. 最长的美好子字符串 (3)2269. 找到一个数字的 K 美丽值 (1)先要对数据进行预处理,对nums进行升序排序; (2)两个指针设置l为0, r为-1,一开始r向右滑动; (3)当窗口的大小大于k的时候,i也向右滑动; (4)每次都
2022-06-07 16:38:04
97
原创 算法-双指针
(1)2000. 反转单词前缀 (2)917. 仅仅反转字母 (1)双指针,左指针就是数组的第一位,右指针就是查到的元素的位置; (2)查到之后开始交换,并且l++,r–。2.仅仅反转字母 (1)双指针,l指向第一个元素,r指向最后一个元素,判断是不是字母,如果是字母的话就交换;如果不是的话就跳过。 (2) 判断字母方法就是通过判断是不是在a...
2022-06-05 22:21:43
66
原创 算法-贪心算法
保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。通常的预处理是:排序 (1)1221. 分割平衡字符串 (2)1217. 玩筹码 (3)1029. 两地调度 (4)面试题 10.11. 峰与谷 (1) 需要设置一个计数器cnt: 遇见’R’的时候,计数器cnt加1;遇到’L’的时候,计数器cnt减1. cnt为0的时候就说明可以切割,最后返回切割数。2. 玩筹码 (1)这道题比较绕的一个点就是:第
2022-06-04 17:13:42
93
原创 算法-排序-匿名函数
C++中的匿名函数,是在句中定义和声明一个临时函数,仅在调用时才会创建函数对象,无需在头文件中声明。capture: 捕获列表return-type: 返回类型一般情况下编译器可以推断出返回类型,可以用auto而不指定返回类型。但是有多各return语句时需要指定返回类型。 1. 直接写在main函数中 2. 和sort()一起连用 一维数组降序排序为:二、练习题目 (1) 数组中两元素的最大乘积 (2) 按照频率将数组升序排序
2022-06-03 16:56:33
702
原创 算法--数组--数论
素数的概念: 1. 素数又称质数,素数首先满足条件是要大于等于2,并且除了1和它本身外,不能被其他任何自然数整除; 2. 1既不是素数也不是合数; 3. 2是唯一的偶素数。素数筛选法:二、练习题目 (1) 所有奇数长度子数组的和 简单 (2) 到目标元素的最小距离 简单 (3) 拆炸弹 简单 (4) 能否连接形成数组 简单 (1) 因为数据量特
2022-06-01 23:57:18
134
原创 算法--动态规划
动态规划一、练习题目爬楼梯最大子数组和二、算法思路爬楼梯很经典的一道动态规划算法题目思路:爬楼梯方式的次数是上一次差一格楼梯的次数加上上一次差两个楼梯的次数:公式就是: dp[n] = dp[n-1] + dp[n-2]class Solution {public: int climbStairs(int n) { vector<int>dp(n+1, 0); int i; if(n<3){
2022-05-28 09:29:29
71
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人