题目简介:给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。
找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。
示例:
1234X X X XX O O XX X O XX O X X
运行你的函数后,矩阵变为:
1234X X X XX X X XX X X XX O X X
解释:
被围绕的区间不会存在于边界上,换句话说,任何边界上的 'O' 都不会被填充为 'X'。 任何不在边界上,或不与边界上的 'O' 相连的 &...
题目简介:给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。
重复出现的子串要计算它们出现的次数。
示例 1 :
1234567输入: "00110011"输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的次数。另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。
示例 2 :
123输入: "10101"输出: 4解释: 有4个...
题目简介:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.'分隔。
示例:
12输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]
思路:递归,函数形式为dfs(int pointnum, int lastpoint, string& s, string& temp)。
其中pointnum代表已经加点的数量,lastp...
题目简介:二叉搜索树中的两个节点被错误地交换。
请在不改变其结构的情况下,恢复这棵树。
示例 1:
123456789101112131415输入: [1,3,null,null,2] 1 / 3 \ 2 输出: [3,1,null,null,2] 3 / 1 \ 2
示例 2:
123456789101112131415输入: [3,1,4,null,null,2] 3 / \1 4 / 2 输出: [2,1,4,null,null,3] 2 / \1 4 / 3
思路:由于是二叉搜索树,所以其中序遍历必是一个递增序列。
所以我们对...
题目简介:给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例 1:
1234567输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true
示例 2:
1234567输入: 1 1 / \ 2 2 [1,2], ...
题目简介:给定一组 互不相同 的单词, 找出所有不同 的索引对(i, j),使得列表中的两个单词, words[i] + words[j] ,可拼接成回文串。
示例 1:
123输入:["abcd","dcba","lls","s","sssll"]输出:[[0,1],[1,0],[3,2],[2,4]] 解释:可拼接成的回文串为 ["dcbaabcd","abcddcba","slls","llssssll"...
题目简介:在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。
计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。
示例 1:
12345678910输入: [3,2,3,null,3,null,1] 3 / \ 2 3 \ \ 3 1 输出: 7 解释: 小偷一晚能够盗取的最高金...
题目简介:你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。
在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]
给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?
示例 1:
123输入: 2, [[1,0]] 输出: true解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。
示例 2:
123输入: 2, [[1,0],[0,1]]输出: false解释: 总共有 2 门课程。学习课程 1 之前,你需要先完成课程 0;并...
题目简介:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
思路:模拟竖式相加,首先通过前缀补0的方式使两个字符串拥有相同的长度。
然后从后往前,一位一位模拟相加,若有进位,则flag = 1。
最后相加结束后,若flag = 1,则最后存在进位,res = '1' + res即可。
代码如下:12345678910111213141516171819202122232425262728293031323...
题目简介:给定一个二叉树,原地将它展开为一个单链表。
例如,给定二叉树
12345 1 / \ 2 5 / \ \3 4 6
将其展开为:
12345678910111 \ 2 \ 3 \ 4 \ 5 \ 6
思路:前序遍历,将先后遍历到的结点存储起来。
最后将每个结点连接在前一个结点的右子树上,前一个结点的左子树置为空。
tip:
不知道这个算不算原地…
代码如下:123456789101112131415161718192021222324252627282930...