最佳观光组合
解题思路主要要理解:最大化 A[i]+i+A[j]-j 的值其实就等价于求 [0,j-1] 中 A[i]+i 的最大值 mx,景点 j 的答案即为 mx+A[j]-j
代码java1234567891011class Solution { public int maxScoreSi ...
二叉树的序列化与反序列化
解题思路序列化时,直接使用广度遍历,不用多讲。主要把null也一并保存反序列化时,同样可以使用队列和广度遍历,每次将节点的左子树和右子树赋值。同时将左子树和右子树进队列。
代码java1234567891011121314151617181920212223242526272829303132333 ...
等式方程的可满足性
解题思路通过并查集完成,根据等于号,构建并查集,构建的思路是,可以连通的元素,一定有相同的父亲节点。
通过并查集,判断不等于的元素,只要不在同一个集合中,就满足条件
代码java1234567891011121314151617181920212223242526272829303132333435 ...
除自身以外数组的乘积
给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。
示例:
输入: [1,2,3,4]输出: [24,12,8,6]
提示:题目数据保证数组之中任意元素的全部前缀元素和 ...
974. 和可被 K 整除的子数组
给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。
示例:
输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, ...
每个元音包含偶数次的最长子字符串
解题思路通过这道题,主要了解到了c++的位运算。包括了~ ,^.一开始没有理解~运算,其实是位取反。~-1 = 0
代码cpp12345678910111213141516171819202122232425262728293031class Solution {public: i ...
乘积最大子数组
解题思路一开始以为和最长子序列一样,使用一个dp[n]记录以nums[n]为末尾元素的,最大子序列和。后来发现还有负负得正的情况。所以使用dp_min维护最小序列乘积,最后状态转移的时候,需要判断三个值得大小。 dp_max[i] = max({dp_max[i-1]dp_max[i], dp_mi ...
课程表
解题思路广度遍历的思路。1.首先将给定的课程表关系图转换为图的邻接表。2.深度遍历邻接表。使用visited来记录节点是否在搜索中被遍历过,如果被遍历过,那么说明有环,直接退出。3.每次将遍历到的最后一个值,作为结果存放到结果栈中。
代码cpp1234567891011121314151617181 ...
只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]输出: 1示例 2:
输入: [4,1,2,1,2]输出: 4
解题思路很巧妙的方法,根 ...
最大正方形
题目描述在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。
示例:
输入:
1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0
输出: 4
解题思路状态转移方程dp[i][j] = min({dp[i][j-1], dp[i-1][j], d ...