题目简介:给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 "a!=b"。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。
只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。
示例 1:
123输入:["a==b","b!=a"]输出:false解释:如果我们指定,a = 1 且 b = 1,那么可以满足第一个方程,但无法满足第二个方程。没有办法分配变...
题目简介:你有一个只支持单个标签页的 浏览器 ,最开始你浏览的网页是 homepage ,你可以访问其他的网站 url ,也可以在浏览历史中后退 steps 步或前进 steps 步。
请你实现 BrowserHistory 类:
BrowserHistory(string homepage) ,用 homepage 初始化浏览器类。
void visit(string url) 从当前页跳转访问 url 对应的页面 。执行此操作会把浏览历史前进的记录全部删除。
string back(int steps) 在浏览历史中后退 steps 步。如果你只能在浏览历史中后退至多 x 步且 s...
题目简介:给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:
每次转换只能改变一个字母。
转换过程中的中间单词必须是字典中的单词。
说明:
如果不存在这样的转换序列,返回一个空列表。
所有单词具有相同的长度。
所有单词只由小写字母组成。
字典中不存在重复的单词。
你可以假设 beginWord 和 endWord 是非空的,且二者不相同。
示例 1:
12345678910输入:beginWord = "hit",endWord = &qu...
题目简介:给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 O(n)。
示例:
123输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。
思路:首先设置一个集合,用来去重,减少循环的次数。
为了减少循环的次数,当我们访问一个数时,若它的前驱也存在于集合中,比如{2,3,4,5,6},3的前驱为2,因为已经有2的存在了,所以最长连续序列必不可能从3开始计数。
所以我们找那些集合中不存在前驱的数,并以该数为起始点,统计最长的连续序列,最后返回最大值即可。
由于循环时每个数最多被访问到1次,...
题目简介:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 1:
12输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]
示例 2:
12输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]
限制:
0 <= matrix.length <= 100
0 <= matrix[i].length <= 100
思路:这题和我大一时候在算法书上看到的蛇形填数十分相似…可以用相同...
题目简介:给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。
示例:
12输入: [1,2,3,4]输出: [24,12,8,6]
提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。
说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。
思路:将除自身以外的数组分为自身左边的数组和自身右边的数组两部分。
通过两次循环分别求出左边数组的乘积与右边数组的乘积。
tip:
注意具体的手法…
代码如...
题目简介:爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下:
爱丽丝以 0 分开始,并在她的得分少于 K 分时抽取数字。 抽取时,她从 [1, W] 的范围中随机获得一个整数作为分数进行累计,其中 W 是整数。 每次抽取都是独立的,其结果具有相同的概率。
当爱丽丝获得不少于 K 分时,她就停止抽取数字。 爱丽丝的分数不超过 N 的概率是多少?
示例1:
123输入:N = 10, K = 1, W = 10输出:1.00000说明:爱丽丝得到一张卡,然后停止。
示例2:
1234输入:N = 6, K = 1, W = 10输出:0.60000说明:爱丽丝得到一张卡,然后...
题目简介:求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例 1:
12输入: n = 3输出: 6
示例 2:
12输入: n = 9输出: 45
限制:
1 <= n <= 10000
思路:不能使用for,就想到用递归,但是需要判断递归结束的标志,也就是n —> n - 1 -> ... -> 0,n到达0时需要退出递归。所以可以使用逻辑运算符&&的短路性质。
即对于 A && B 这个表达式,如果 A 表达式返回 Fa...
题目简介:给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。
对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。
示例 1:
12345678输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,true,false,true] 解释:孩子 1 有 2 个糖果,如果他得到所有额外的糖果(3个),那么他总共有 5 个糖果,他将成为拥有最...
题目简介:给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
12345 1 / \ 2 2 / \ / \3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
12345 1 / \2 2 \ \ 3 3
思路:运用递归,由于是镜像对称,所以判定左树的左子树和右树的右子树,左树的右子树和右树的左子树是否相等即可。
tips:
两结点均为空时,相等
只有一结点为空时,不相等
代码如下:123456789101112131415161718192021222324...