自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Heroin的博客

不行了,我不能再想了,我怕掉头发

  • 博客(159)
  • 资源 (5)
  • 问答 (3)
  • 收藏
  • 关注

原创 LeetCode(中等) 二叉树的最近公共祖先(c#)

LeetCode(中等) 二叉树的最近公共祖先(c#)题目为 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。思路为深度遍历,最近的公共祖先就是左右两个子树都分别存在符合节点。函数返回值为存在对应节点返回对应值,不存在和不是父节点返回空 ,代码如下 public TreeNode LowestCommon

2021-11-10 17:15:24 484

原创 LeetCode(简单) 对称二叉树(c#)

工作忙,很久没有刷题了,趁着不忙刷道简单题,题目为 给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。思路递归子节点对称判断是否相等,代码如下 public static bool IsSymmetric(TreeNode root) { return GetTreeNode(root, root); } public static bool GetTreeNode(TreeNo

2020-11-28 12:23:56 260

原创 python学习之基本数据类型

Python3 中有六个标准的数据类型:Number(数字)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典)Python3 的六个标准数据类型中:不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。数字类型python中数字有四种类型:整数counter = 100 # 整型变量布尔型a=tr

2020-08-12 17:13:02 209

原创 LeetCode(中等) Pow(x, n)(c#)

题目为 实现 pow(x, n) ,即计算 x 的 n 次幂函数。思路一开始的代码直接用Math.Pow()返回了,后来觉得不妥,看了题解,理解了思路,减少了乘的次数代码如下 public double MyPow(double x, int n) { return n>0? PowDetail(x, n):1/ PowDetail(x, n); } public double PowDetail(double x,

2020-07-28 10:13:23 173

原创 LeetCode(简单) 二叉树的最大深度(c#)

题目为 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。思路为 递归遍历,如果为无子节点的叶子节点,那么与之前存储的长度比较。代码为 public int MaxDepth(TreeNode root) { GetDeptMax(root,0); return AllMax; } int AllMax = 0;

2020-07-28 09:04:29 165

原创 LeetCode(困难)跳跃游戏 II(c#)

题目为 给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。一开始的思路为递归回溯出所有的可能性,找到所有的情况下的最小值,代码如下 (超时) public int Jump(int[] nums) { if (nums.Count()==0) { return 0; }

2020-07-24 20:23:50 178

原创 LeetCode(困难)解数独(c#)

题目为 编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。思路是递归,代码注释应该已经逻辑很清楚了 //九列 List<Dictionary<int, bool>> liCol = new List<Dictionary<int, bool>&gt

2020-07-24 15:05:53 560

原创 LeetCode(简单) 除数博弈(c#)

题目为 爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。这种游戏没做过,没有思路。看了评论,才明白其实就是抢2,代码如下 public bool Di

2020-07-24 10:09:56 160

原创 LeetCode(中等)最小路径和(c#)

题目为 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。这题和之前的地下城游戏思路差不多,但是比之前那个简单,我是从终点向起点遍历,选取最小路径值,代码和注释如下 public int MinPathSum(int[][] grid) { if (grid==null) { return 0;

2020-07-23 14:37:02 154

原创 LeetCode(中等)不同的二叉搜索树 II(c#)

题目为 给定一个整数 n,生成所有由 1 … n 为节点所组成的 二叉搜索树 。就是递归遍历,代码如下 public IList<TreeNode> GenerateTrees(int n) { if (n==0) { return new List<TreeNode>(); } return GetAllTree(1, n);

2020-07-22 19:45:14 104

原创 LeetCode(困难)戳气球(c#)

题目为 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气球。求所能获得硬币的最大数量。说明:你可以假设 nums[-1] = nums[n] = 1,但注意它们不是真实

2020-07-22 14:54:29 198

原创 LeetCode(困难)交错字符串(c#)

题目为 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。思路为深度递归,代码复杂度 2^n n为s3的长度 代码如下 未通过 超时 public bool IsInterleave(string s1, string s2, string s3) { if (s3.Length!=(s1.Length+s2.Length)) { return false; }

2020-07-20 14:42:01 120

原创 LeetCode(简单) 两数之和 II - 输入有序数组(c#)

题目为 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。思路 键值对存储,判断是否目标值减去该数的结果已经存在,代码如下 public int[] TwoSum(int[] numbers, int target)

2020-07-20 08:57:48 128

原创 LeetCode(中等)股票的最大利润(c#)

题目为 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?思路同之前股票文章 买卖股票最佳时机代码为 public int MaxProfit(int[] prices) { if (prices.Length <= 1) { return 0; } int n = prices.Length;

2020-07-16 20:23:39 161

原创 LeetCode(中等)买卖股票的最佳时机含手续费(c#)

题目为 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。思路参考之前股票文章 买卖股票的最佳时机 III代码如下 public int MaxProfit(int[] prices, int f

2020-07-16 20:17:34 159

原创 LeetCode(中等)最佳买卖股票时机含冷冻期(c#)

题目为 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。​设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。思路与之前股票思路相同,但是状态变为三个//0:不持股 可买入 1:持股 2:不持股 不可买入最后返回不持股的所有状态代码如下 public int MaxProfit(int[] price

2020-07-16 20:06:42 98

原创 LeetCode(困难)买卖股票的最佳时机 IV(c#)

题目为 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。延续之前的思路 LeetCode(困难)买卖股票的最佳时机 III(c#)代码为如下 下列代码执行存在超出内存的情况 public int MaxProfit(int k, int[] prices) { if (prices.Length &

2020-07-16 17:42:59 123

原创 LeetCode(困难)买卖股票的最佳时机 III(c#)

题目为 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。思路参考精选题解,对应股票问题都是一个思路。精选题解三维数组,[i,k,w]分别对应 i:天数 k:交易次数 w:持有状态(1:持有 0:未持有) public int MaxProfit(int[] prices) { if (prices.

2020-07-16 17:16:08 164

原创 LeetCode(中等)组合总和 II(c#)

题目为 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。与组合总数逻辑差不多,不过递归时,不能给for的开始位数传当前的i了,要加一,然后加个键值对去判断是否存在重复。代码如下 IList<IList<int>> res = new List<ILis

2020-07-16 14:56:02 164

原创 LeetCode(中等)组合总和(c#)

题目为 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。DFS直接遍历,代码如下 IList<IList<int>> res = new List<IList<int>>(); Dictionary<

2020-07-16 14:46:58 151

原创 LeetCode(困难)地下城游戏(c#)

题目为 一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0),要么包含增加骑士健康点数的魔法球(若房间里的值为正整数,则表示骑士将增加

2020-07-15 20:16:16 162

原创 LeetCode(中等)不同的二叉搜索树(c#)

题目为 给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?思路为 动态规划,分别让每个节点当父节点,将左右再继续递归。最终结果就是左侧乘以右侧。代码如下 public int NumTrees(int n) { if (n == 0) { return 1; } if (n < 3) {

2020-07-15 15:20:33 94

原创 LeetCode(困难)计算右侧小于当前元素的个数(c#)

题目为 给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。做这题前,首先应掌握归并排序归并排序介绍以及代码,然后做一下数组中的逆序对这道题,之后做这道题会理解的很快。思路如下,归并排序,操作数组排序同时,新建一个数组记录元素位置,对元素排序时同时对该位置数组同样操作,这样可以记录元素位置,然后比较大小,直接根据位置,向结果数组中添加数量就可以了。一开始的代码如下,第一次

2020-07-15 10:53:07 199

原创 LeetCode(中等)三角形最小路径和(c#)

题目为 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。开始的思路为递归,按照类似深度遍历的方式去遍历整个列表。复杂度较高,代码执行至倒数第二个案例超时,代码如下/*给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。*/

2020-07-14 18:18:29 162

原创 排序算法之归并排序算法优化

之前写了一篇介绍排序算法的排序算法之插入排序、希尔排序、归并排序(C#),发现计算数组的逆序对,我的算法速度比别人要慢很多倍。下面来分析一下为什么这两种归并算法会相差那么多。第一种慢速归并算法,代码如下 /// <summary> /// 归并排序 /// </summary> /// <returns></returns> public int[] MergeSort(int[] arra

2020-07-13 20:37:26 329

原创 LeetCode(困难)数组中的逆序对(c#)

题目为 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。这道题可以当作例题做,思路为归并排序。不理解什么是归并排序可以看我的文章 排序算法之插入排序、希尔排序、归并排序(C#)。当两个有序数组进行合并时,左侧有比右侧大的元素,则左侧该元素之后所有之后的元素均为逆序对。一开始我的代码为public class Solution { public int ReversePairs(int[] nums) {

2020-07-13 20:09:00 187

原创 LeetCode(简单)两个数组的交集 II(c#)

题目为 给定两个数组,编写一个函数来计算它们的交集。很简单的一道题,用键值对存储第一个数组的元素,以及元素的出现次数。然后遍历第二个数组,出现了就添加到结果集,并将键值对出现次数减1。代码如下 public int[] Intersect(int[] nums1, int[] nums2) { Dictionary<int, int> dic = new Dictionary<int, int>(); List&

2020-07-13 08:55:57 169

原创 LeetCode(简单)买卖股票的最佳时机II(c#)

题目为 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。一开始我的思路为,动态规划,数组存储对应每日所赚取的最大值,第一日肯定为0,那么第二天就等于第二天的减去之前天数的所有差值的最大值,对比第一天的赚取值。 取最大的。看了题解之后,发现其实很简单。只记录上涨的值,求和就可以了 。代码如下 public int Max

2020-07-10 17:39:20 237

原创 LeetCode(简单)买卖股票的最佳时机(c#)

题目为 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。思路很简单,遍历数组,存储该节点前的最小值,还要在遍历时存储该节点减去该节点前的最大值。代码如下 public int MaxProfit(int[] prices) { int beforeMin = int.MaxValue;

2020-07-10 16:13:51 192

原创 LeetCode(简单)只出现一次的数字(c#)

题目为 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?一开始我的思路是对数组排序,然后遍历,比较数组前一个和后一个是否都不相等。代码如下 public int SingleNumber(int[] nums) { if (nums.Count()==1) { return nu

2020-07-10 15:30:08 237

原创 LeetCode(中等)字母异位词分组(c#)

题目为 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。思路一开始为,遍历集合,对每个元素计算全排列的所有可能集合。代码如下。很长(复杂度较高,执行超时,可以跳过,直接看第二个解法) public IList<IList<string>> GroupAnagrams(string[] strs) { bool falgNull = false; int nullCount

2020-07-10 14:48:54 164

原创 LeetCode(中等)恢复空格(c#)

题目为 哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!“已经变成了"iresetthecomputeritstilldidntboot”。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表示,设计一个算法,把文章断开,要求未识别的字符最少,返回未识别的字符数。注意:本题相对原题稍作改动,

2020-07-09 16:37:29 164

原创 LeetCode(中等)全排列II(c#)

题目为给定一个可包含重复数字的序列,返回所有不重复的全排列。思路为,相比较与全排序题目,增加了数组包含重复数。思路为键值对判断重复。代码如下 public IList<IList<int>> PermuteUnique(int[] nums) { List<int> temp = new List<int>(); IList<IList<int>> res = n

2020-07-09 15:38:43 133

原创 C#8.0新特性的学习笔记

Readonly 成员可将 readonly 修饰符应用于结构的成员。 它指示该成员不会修改状态。switch 表达式更新增加新语法,可以直接使用枚举类型或类的判断条件了解即可,旧语法同样可以。只不过增加了对元组的支持。一个枚举对象如下public enum Rainbow{ Red, Orange, Yellow, Green, Blue, Indigo, Violet}常规的switch语句如下public static RG

2020-07-09 14:46:43 286

原创 排序算法之计数排序、桶排序、基数排序

计数排序计数排序就是找出数组中的最大、最小值。然后创建一个存储最大至最小元素出现个数的数组。遍历存储所有待排序数组元素。按序输出就是排序后的数组了。代码如下 public void CountingSort(int[] nums) { //查找数组中的最大最小值 int min = int.MaxValue; int max = int.MinValue; for (int i = 0

2020-07-08 16:34:41 134

原创 LeetCode(中等)全排列(c#)

题目为 给定一个 没有重复 数字的序列,返回其所有可能的全排列。这道题之前没有了解过回溯法,看了题解,学习了思路。精选题解链接:这个精选讲解的很好题解里有这一张图,可以让你直接看懂回溯算法时间复杂度:O(N×N!)C#代码如下 public IList<IList<int>> Permute(int[] nums) { IList<IList<int>> res = new List<IList&

2020-07-08 11:33:21 160

原创 LeetCode(简单)跳水板(c#)

题目为 你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。逻辑为,特殊条件判断k=0时,返回空数组。长短相等时,返回一个值就可以;代码如下 public int[] DivingBoard(int shorter, int longer, int k) { if (k==0)

2020-07-08 09:15:29 168

原创 LeetCode(简单)路径总和(c#)

题目为 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。思路为 很明显的深度遍历,叶子节点位置处判断总和。一开始的代码为如下代码 public bool HasPathSum(TreeNode root, int sum) { if (root == null) { return false;

2020-07-07 14:55:51 176

原创 LeetCode(困难)接雨水(c#)

题目为 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。思路将数组的位置以及值存储到键值对中,并排序。找到最高点,分别向左、右计算水量,水量为最低的边乘以距离。减去两边之间的数组值,代码如下 public int Trap(int[] height) { if (height==null||height.Count()==0) { return 0;

2020-07-07 11:48:29 198

原创 LeetCode(中等)有效的数独(c#)

题目为 判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。思路为两次for循环,遍历数组,对使用集合存储键值对,分别的列、行、九宫格进行判断。代码如下 public bool IsValidSudoku(char[][] board) { List<Dictionary<

2020-07-06 16:42:52 214

Jmeter+Badboy压力测试软件包

软件是最新版本的两个软件,网上其他资源可能存在用badboy导出的脚本Jmeter无法使用的情况,这两个软件都是测试过可用的版本

2018-11-23

System.Data.OracleClient.dll

System.Data.OracleClient.dll数据库帮助类,连接数据库oracle时需要的引用环境

2018-09-05

Oracle.ManagedDataAccess.dll

ODP.NET Managed的引用包,连接数据库帮助类Oracle.ManagedDataAccess.dll

2018-09-05

Oracle.DataAccess.dll

oracle数据库连接帮助类,无需下载客户端,Oracle.DataAccess.dll

2018-09-05

aspnetcore.dll

无法启动 IIS Express Web 服务器的解决文件,详情看我的博客

2017-11-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除