随笔分类 - LeetCode
LeetCode题解
摘要:题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后
阅读全文
摘要:题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树: 示例 1: 示例 2: 提示:数组长度 & postorder) { int size = postorder.siz
阅读全文
摘要:题目 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、"5e2"、" 123"、"3.1416"、"0123"都表示数值,但"12e"、"1a3.14"、"1.2.3"、"+ 5"、" 1E 16"及"12e+5.4"都不是。 本题同 "" 思路 有效数字满足模
阅读全文
摘要:题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 示例 2: 示例 3: 说明: 100.0 1); } return res; } }; c++ class Solution { public: double myPow(double x, int n) { long
阅读全文
摘要:题目 实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。 示例 1: 示例 2: 示例 3: 说明: 100.0 1); res = res; if (n & 0x1 == 1) res
阅读全文
摘要:题目 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。 示例 1: 输入: 1 输出: [0.16667,0.16667,0.16667,0
阅读全文
摘要:题目 给定一个数组 A[0,1,…,n 1],请构建一个数组 B[0,1,…,n 1],其中 B 中的元素 B[i]=A[0]×A[1]×…×A[i 1]×A[i+1]×…×A[n 1]。不能使用除法。 示例: 提示: 所有元素乘积之和不会溢出 32 位整数 a.length constructAr
阅读全文
摘要:题目 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 示例 1: 给定的树 s: 给定的树 t: 返回 true,因为 t 与 s 的一个子树拥有相同的结构和节点值。 示
阅读全文
摘要:题目 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。 火车票有三种不同的销售方式: 一张为期一天的通行证售价为 costs[0] 美元; 一张为期七天的通行证售价为 costs[
阅读全文
摘要:题目 求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 示例 1: 示例 2: 限制:1 0) && ((sum += sumNums(n 1)) 0); return sum; } }; ```
阅读全文
摘要:题目 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 示例: 思路一:贪心 每次找到可以到达的最远位置,如果遍历位置到达最远位置,则步数加一。 代码 时间复杂度:O(n) 空间复杂度:O(1
阅读全文
摘要:题目 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n 1并且m 1),每段绳子的长度记为 k[0],k[1]...k[m] 。请问 k[0] k[1] ... k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的
阅读全文
摘要:题目 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n 1并且m 1),每段绳子的长度记为 k[0],k[1]...k[m] 。请问 k[0] k[1] ... k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的
阅读全文
摘要:题目 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 示例 1: 示例 2: 限制: 1 & nums) { int res = 0; unordered_map ump; for (auto n : nums) { if (ump.count(
阅读全文
摘要:题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。 如果 n 是快乐数就返回 True ;不是,则返回
阅读全文
摘要:题目 (这是一个 交互式问题 ) 给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值。 如果不存在这样的下标 index,就请返回 1。 何为山脉数组?如果数组 A 是一个山脉数组的话,那它满足
阅读全文
摘要:题目 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。 示例 : 注意: 结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案。 你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现? 本题同 "【剑指Off
阅读全文
摘要:题目 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 1: 示例 2: 限制:2 singleNumbers(vector& nums) { int e = 0; for (auto n :
阅读全文
摘要:题目 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是
阅读全文
摘要:题目 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 思路一:顺序合并 基于合并两个链表,取第一个链表与第二个链表合并,然后将合并的链表再与第三个链表合并,依次类型。 代码 时间复杂度:假设每个链表的最长长度是 n,渐进时间复杂度为 。 空间复杂度:没有用到与 k 和
阅读全文

浙公网安备 33010602011771号