最大单词长度乘积
力扣 318. 最大单词长度乘积题目说明给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。
提示:
2 <= words.length <= 1000
1 <= words[i].length <= 1000
words[i] 仅包含小写字母
示例示例 1:
123输入: ["abcw","baz","foo","bar","xtfn","abcdef"]输出: 16 解释: 这两个单词为 "abcw", "xtfn"。
示例 2:
123输入: ["a","ab","abc","d","cd","bcd"," ...
二叉树展开为链表
力扣 114. 二叉树展开为链表题目说明给你二叉树的根结点 root ,请你将它展开为一个单链表:
展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。
提示:
树中结点数在范围 [0, 2000] 内
-100 <= Node.val <= 100
示例示例 1:
12输入:root = [1,2,5,3,4,null,6]输出:[1,null,2,null,3,null,4,null,5,null,6]
示例 2:
12输入:root = []输出:[]
示例 3:
12输入:root = [0]输出:[0]
笔者理解此题是一道二叉树算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,发现本题可以采用回溯的思想,前序遍历的顺序是根左右,所以我们选择按照最右、最左、根的顺序倒序回溯操作,让我们来看看具体如何实现的吧。
实现1234567891011121314151617181920212223242526272829303 ...
完美矩形
力扣 391. 完美矩形题目说明给你一个数组 rectangles ,其中 rectangles[i] = [xi, yi, ai, bi] 表示一个坐标轴平行的矩形。这个矩形的左下顶点是 (xi, yi) ,右上顶点是 (ai, bi) 。
如果所有矩形一起精确覆盖了某个矩形区域,则返回 true ;否则,返回 false 。
提示:
1 <= rectangles.length <= 2 * 10^4
rectangles[i].length == 4
-10^5 <= xi, yi, ai, bi <= 10^5
示例示例 1:
123输入:rectangles = [[1,1,3,3],[3,1,4,2],[3,2,4,4],[1,3,2,4],[2,3,3,4]]输出:true解释:5 个矩形一起可以精确地覆盖一个矩形区域。
示例 2:
123输入:rectangles = [[1,1,2,3],[1,3,2,4],[3,1,4,2],[3,2,4,4]]输出:false解释:两个矩形之间有间隔,无法覆盖成一个矩形。
示例 3:
123 ...
从前序与中序遍历序列构造二叉树
力扣 105. 从前序与中序遍历序列构造二叉树题目说明给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。
提示:
1 <= preorder.length <= 3000
inorder.length == preorder.length
-3000 <= preorder[i], inorder[i] <= 3000
preorder 和 inorder 均无重复元素
inorder 均出现在 preorder
preorder 保证为二叉树的前序遍历序列
inorder 保证为二叉树的中序遍历序列
示例示例 1:
12Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]
示例 2:
12Input: preorder = [-1], inorder = [-1]Output: [-1]
笔者理解此题是一道二叉树算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后, ...
灯泡开关
力扣 319. 灯泡开关题目说明初始时有 n 个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭一个。
第三轮,你每三个灯泡就切换一个灯泡的开关(即,打开变关闭,关闭变打开)。第 i 轮,你每 i 个灯泡就切换一个灯泡的开关。直到第 n 轮,你只需要切换最后一个灯泡的开关。
找出并返回 n 轮后有多少个亮着的灯泡。
提示:
0 <= n <= 10^9
示例示例 1:
123456789输入:n = 3输出:1 解释:初始时, 灯泡状态 [关闭, 关闭, 关闭].第一轮后, 灯泡状态 [开启, 开启, 开启].第二轮后, 灯泡状态 [开启, 关闭, 开启].第三轮后, 灯泡状态 [开启, 关闭, 关闭]. 你应该返回 1,因为只有一个灯泡还亮着。
示例 2:
12输入:n = 0输出:0
示例 3:
12输入:n = 1输出:1
笔者理解此题是一道脑筋急转弯算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,发现此题明白原理后就豁然开朗了,我们可以看到题目n的范围是9次幂级的,所以平常的解决办法通常是不行的 ...
MySQL入门
引入上篇文章中我们简单介绍了数据库以及 MySQL 的介绍及安装,本篇文章我们主要要介绍一下 MySQL 的相关规则和语法。
使用 MySQL连接DBMS MySQL与所有客户机-服务器DBMS一样,要求执行命令之前登录到DBMS。MySQL在内部保存自己的用户列表,并且把每个用户与各种权限关联起来。
在上篇文章安装MySQL过程中,我们的账号为root,密码为123456。在自己本地使用时,可以这样简单设置一下。但是在现实生产或者工作时,管理登录受到密切保护(因为对它的访问授予了创建表、删除整个数据库、更改登录和口令等完全的操作)。
在连接MySQL时,需要以下信息:
主机名(计算机名)——如果连接到本地MySQL服务器,为Localhost;
端口(如果使用默认端口3306之外的端口);
一个合法的用户名;
用户口令(也就是密码)。
例如在SQLyog中登录:
选择数据库 在你最初连接到MySQL时,没有数据库打开供你使用。在你能执行任何数据库操作之前,需要选择一个数据库。为此,我们可以使用USE关键字。
12USE 表名# 将当前数据库转到目的数据 ...
不同的二叉搜索树
力扣 96. 不同的二叉搜索树题目说明给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。
提示:
1 <= n <= 19
示例示例 1:
12输入:n = 3输出:5
示例 2:
12输入:n = 1输出:1
笔者理解此题是一道动态规划算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,发现我们只需要依次讨论 2 - n 个节点的可能即可,每个可能只需要讨论 左子树的可能和右子树可能的乘积 即可,让我们来看看具体如何实现的吧。
实现123456789101112131415161718192021222324252627class Solution { /** * 动态规划 * 左右划分 */ public int numTrees(int n) { if (n < 2) { return 1; } int[] sum ...
单词搜索
力扣 79. 单词搜索题目说明给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
提示:
m == board.length
n = board[i].length
1 <= m, n <= 6
1 <= word.length <= 15
board 和 word 仅由大小写英文字母组成
示例示例 1:
12输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCE ...
重排链表
力扣 143. 重排链表题目说明给定一个单链表 L 的头节点 head ,单链表 L 表示为:
L0 → L1 → … → Ln-1 → Ln请将其重新排列后变为:
L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
提示:
链表的长度范围为 [1, 5 * 10^4]
1 <= node.val <= 1000
示例示例 1:
12输入: head = [1,2,3,4]输出: [1,4,2,3]
示例 2:
12输入: head = [1,2,3,4,5]输出: [1,5,2,4,3]
笔者理解此题是一道链表算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,发现我们可以找出后半截链表再翻转最后再合并,让我们来看看具体如何实现的吧。
实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606 ...
将有序数组转换为二叉搜索树
力扣 108. 将有序数组转换为二叉搜索树题目说明给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。
高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。
提示:
1 <= nums.length <= 10^4
-10^4 <= nums[i] <= 10^4
nums 按 严格递增 顺序排列
示例示例 1:
123输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:
示例 2:
123输入:nums = [1,3]输出:[3,1]解释:[1,3] 和 [3,1] 都是高度平衡二叉搜索树。
笔者理解此题是一道二叉树算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,发现我们只需要每次去找区间中间的值作为根节点,再左右区间作为左右子树即可,让我们来看看具体如何实现的吧。
实现1234567891011121314151617181 ...









