LeetCode0167.两数之和 II - 输入有序数组
摘要:题目要求 算法分析 可以用双指针法, 分别指向头尾元素,如果两元素的和大于目标,尾指针前移,如果小于目标,头指针后移,等于目标即可得答案 代码展示(C#) public class Solution { public int[] TwoSum(int[] numbers, int target) {
阅读全文
posted @
2020-07-20 07:57
King__R
阅读(126)
推荐(0)
LeetCode0096.不同的二叉搜索树
摘要:题目要求 算法分析 当左右子树的节点数确定时,树的种类数 = 左子树的种类数*右子树的种类数 左右子树的节点数有多种情况,所以将各种情况下的结果求和即可得答案 F(节点数) = ΣF(左子树节点数) * F(右子树节点数) 动态规划 F(0) = 0; (后面参与乘法计算时F(0) = 1) F(1
阅读全文
posted @
2020-07-15 15:01
King__R
阅读(97)
推荐(0)
LeetCode0350.两个数组的交集 II
摘要:题目要求 算法分析 将短数组元素以及出现的次数存到字典中(元素->键,出现次数->值), 遍历长数组的元素,如果该元素在字典中的个数大于0,则将字典中以该元素为键的值减1.并把元素存到结果数组中. 代码展示(C#) public class Solution { Dictionary<int, in
阅读全文
posted @
2020-07-13 18:42
King__R
阅读(120)
推荐(0)
LeetCode0055.跳跃游戏
摘要:题目要求 算法分析 贪心算法 从起点开始遍历直到所能到达的最远位置, 过程中更新所能到达的最远索引,如果能到达的最远索引大于终点则返回真,否则为假 代码展示(C#) public class Solution { public bool CanJump(int[] nums) { int maxIn
阅读全文
posted @
2020-06-11 11:18
King__R
阅读(122)
推荐(0)
LeetCode0739.每日温度
摘要:题目要求 算法分析 利用栈解决. 按索引遍历{ 如果栈为空,将索引入栈, 如果栈不空,判断,当前索引对应的温度是否比栈顶索引对应的温度高,{ 如果高则出栈,并计算索引差,所得结果存入返回数组对应的索引上,然后返回上一步重新比较栈顶元素和当前元素的大小 如果低则入栈。 } } 代码展示(C#) pub
阅读全文
posted @
2020-06-11 10:54
King__R
阅读(128)
推荐(0)
LeetCode面试题46.把数字翻译成字符串
摘要:题目要求 算法分析 先将数字转换成字符串, dp[i]代表,索引从0开始到i,所有字母翻译成字符串的种类数, dp[0] = 1; dp[1] = dp[0] + g(1) //g(1)代表,索引0和1的两个数字是否能构成一个字母,如果是返回1,不是返回0 dp[2] = dp[1] + dp[0]
阅读全文
posted @
2020-06-09 11:02
King__R
阅读(190)
推荐(0)
LeetCode0128.最长连续序列
摘要:题目要求 算法分析 思路: 找到连续数字集合的起点,然后对数字进行加1操作,直到该数字不存在与数组中为止,然后判断该连续数字集合的长度是否为最长 可以利用哈希表查找数字是否存在,减少时间复杂度. 代码展示(C#) public class Solution { List<int> list = ne
阅读全文
posted @
2020-06-06 13:07
King__R
阅读(140)
推荐(0)
LeetCode面试题29.顺时针打印矩阵
摘要:题目要求 算法分析 模拟打印路径, 设置一个枚举变量表示索引运动方向, 每次运动时根据运动方向判断下一个位置, 改变方向的条件是,下一步会运动到边界,或者运动到已经去过的位置,(可以把已经去过的位置赋值为特殊值,方便判断), 如果连续改变两次方向则代表打印路径结束。 代码展示(C#) public
阅读全文
posted @
2020-06-05 02:04
King__R
阅读(261)
推荐(0)
LeetCode0238.除自身以外数组的乘积
摘要:题目要求 算法分析 如果不限制使用除法, res[n] = nums[0] * nums[1] * .....* nums[nums.Lenght-1] / nums[n]; 由于限制除法 res[n] = nums[0] * nums[1] *....* nums[n-1] * nums[n+1]
阅读全文
posted @
2020-06-04 22:32
King__R
阅读(113)
推荐(0)
LeetCode0837.新21点
摘要:题目要求 算法分析 题意: 从0点数开始,等可能加上1到W之间的某一数值,如果点数小于等于K,继续抽牌,一旦点数大于K则停止抽牌,并判断点数是否超过N,没超过N就获胜。本题求获胜的概率 整局游戏所有可能出现的点数范围是 0 到 W+K-1,可以用长度为W+K的数组res存储处于各点数时游戏获胜的概率
阅读全文
posted @
2020-06-03 14:32
King__R
阅读(143)
推荐(0)
LeetCode面试题64.求1+2+…+n
摘要:题目要求 算法分析 不让用乘除,不让用for while if else switch case 首先想到递归,递归需要有终止条件, 可以利用&&的特性,左边为false,来屏蔽掉右边的代码,来实现终止功能. 代码展示(C#) public class Solution { public int S
阅读全文
posted @
2020-06-02 01:10
King__R
阅读(169)
推荐(0)
LeetCode1431.拥有最多糖果的孩子
摘要:儿童节快乐 题目要求 算法分析 贪心算法,找到最大值,用最大值减去额外糖果数量,小于这个结果的不可能获得最多糖果 代码展示(C#) public class Solution { public IList<bool> KidsWithCandies(int[] candies, int extraC
阅读全文
posted @
2020-06-01 23:11
King__R
阅读(163)
推荐(0)
LeetCode0198.打家劫舍
摘要:题目要求 算法分析 按照数组顺序偷,将每个房子累计可能偷到的最大值记录下来, 到第0个房子累计偷到的最大值Value[0] = nums[0] 到第1个房子累计偷到的最大值Value[1] = Max( Value[0],nums[1]) 到第2个房子累计偷到的最大值Value[2] = Max(
阅读全文
posted @
2020-05-29 12:43
King__R
阅读(122)
推荐(0)
LeetCode0974.和可被K整除的子数组
摘要:题目要求 算法分析 利用前缀和,只要统计前缀和之差可被K整除的子数组的个数即可, 根据同余定理,两个前缀和a和b,若满足a-b能够被K整除,那么整数a与b对模K同余, 于是可以根据同余的前缀和的数量,得到可被K整除的子数组数。 代码展示(C#) public class Solution { Dic
阅读全文
posted @
2020-05-27 15:27
King__R
阅读(226)
推荐(0)
LeetCode0105.从前序与中序遍历序列构造二叉树
摘要:题目要求 算法分析 先序遍历中第一个元素的值就是树的根, 我们可以通过该值检索到根在中序遍历内对应的索引 这样就得到了左子树的中序遍历,和左子树的长度。 以及右子树的中序遍历。 在先序遍历序列中,根据左子树的长度,可以获得左子树的先序遍历,以及右子树的先序遍历。 这样我们得到了左子树的先序遍历和中序
阅读全文
posted @
2020-05-22 15:30
King__R
阅读(206)
推荐(0)
LeetCode0005.最长回文子串
摘要:题目要求 算法分析 暴力算法 截取每一个子串 判断是否为回文串 输出其中最长的回文子串。 中心扩展 若回文串两侧的字符相同,则删去两侧字符后剩下的字符串仍为回文串。 我们可以反过来,对字符串中的某一位字符c(或某两位相邻的相同字符串cc), 如果其两侧字符相同,则让它向两侧扩展,直到两侧字符不同,最
阅读全文
posted @
2020-05-21 14:50
King__R
阅读(181)
推荐(0)
LeetCode0001.两数之和
摘要:题目要求 算法分析 暴力算法,双循环迭代,即可找到满足条件的数组下标,时间复杂度为O(n2)。 优化算法,可以利用哈希表(C#用字典)在第一次迭代时先存储数组的数据, 这样第二次迭代检索数据时可以利用索引快速查找,实现了用空间换时间。 更优算法,不必要先存储再查找,可以边存数据,边查找。 代码展示(
阅读全文
posted @
2020-05-20 23:48
King__R
阅读(156)
推荐(0)
LeetCode0680.验证回文字符串 Ⅱ
摘要:题目要求: 算法分析 判断回文串,可使用头尾双指针。因为回文串满足以下条件,若回文串两侧的字符相同,则删去两侧字符后剩下的字符串仍为回文串。 本题的特殊要求是,最多可以删除一个字符,所以双指针向中间行进的过程中可以有一次删除相异字符的机会, 因为头尾指针的两个字符不同,所以可以删掉头字符,或者删掉尾
阅读全文
posted @
2020-05-20 23:31
King__R
阅读(163)
推荐(0)
LeetCode1371.每个元音包含偶数次的最长子字符串
摘要:题目要求: 算法分析 条件: 每个元音字母,'a','e','i','o','u',在子字符串中都恰好出现了偶数次 在前缀和中存储某个元音字母出现次数的奇偶性, 若某一区间两侧的前缀和相同,则代表该字母在对应的区间内出现的次数为偶数次(奇数-奇数 = 偶数,偶数-偶数=偶数)。 同理,若前缀和中存储
阅读全文
posted @
2020-05-20 22:05
King__R
阅读(409)
推荐(0)