自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 课程表 II

课程表 II代码如下:public class Solution { public int[] FindOrder(int numCourses, int[][] prerequisites) { IEnumerable<int> enumerable = Enumerable.Range(0, numCourses); //课程依赖列表 List<int>[] list = enumerable.Sel

2020-05-17 11:05:57 151

原创 课程表

课程表代码如下:public class Solution { public bool CanFinish(int numCourses, int[][] prerequisites) { //科目的依赖关系 List<int>[] list = Enumerable.Range(0, numCourses).Select(c => new List<int>()).ToArray(); foreach (i

2020-05-17 11:01:23 207

原创 二叉树的最近公共祖先

二叉树的最近公共祖先编写一个函数递归调用,从根节点开始判断,若该节点为空,则返回null,若等于q或p,则返回该节点,若未找到公共祖先,则逐层向下递归,一个根节点分左右两个子节点,递归返回时对结果判断,若左边没找到,则返回右节点,同理右边。若两边都找到,则该节点为公共祖先。代码如下:public class Solution { public TreeNode LowestComm...

2020-05-03 21:17:28 212

原创 二叉树的最大深度

二叉树的最大深度按照递归的思路,先从根节点开始,空则返回零,非空则加一并从两个子节点继续,最后取加一最多的即可。代码如下:public class Solution { public int MaxDepth(TreeNode root) { if(root==null) { return 0; } ...

2020-05-03 19:49:26 79

原创 对称二叉树

对称二叉树编写一个递归函数,用于比较子节点是否对称,对称则继续,不对称则false。最后都对称就true。代码如下:结果:

2020-04-23 19:50:00 62

原创 相同的树

相同的树本题用递归调用即可,先验证根节点是否相同,相同则继续访问子节点,出现不相同就false,没出现就true。代码如下:结果:

2020-04-23 19:34:02 129

原创 格雷编码

格雷编码求n的解,即在n-1的解的情况下,在二进制数第一位前面再加上0或1,例如n等于2的解00 - 0,10 - 2,11 - 3,01 - 1。n = 3 的解000 - 0,010 - 2,011 - 3,001 - 1,100 - 4,110 - 6,111 - 7,101 - 5 。但排列顺序不符合规则。所以,需要通过倒序第一位前面加0的表中元素,加上第一位前面加1对应的十进制值,存...

2020-04-19 11:40:13 475

原创 子集

子集运用二进制位运算,2^n对应n位二进制数,假设输入是1、2、3。首先全部的子集为【000】【001】【010】【100】【011】【101】【110】【111】,1表示这一位的数字存在。设置一层循环for(int i=0;i<m;i++),m=Math.Pow(2,n)。然后根据i 的二进制数中 ‘1’ 的位置取得子集。代码如下:结果:...

2020-04-19 10:36:51 118

原创 无重复字符的最长子串

无重复字符的最长子串解析通过滑动窗口来实现,使用 HashSet 将字符存储在当前窗口 [i, j)(最初 j = i)中。 向右侧滑动索引 j,如果它不在 HashSet 中,继续滑动 j,直到 s[j] 已经存在于 HashSet 中。然后将滑动窗口的左侧向右移动,直到 HashSet 中没有再出现重复值的情况。之后继续将滑动窗口像右侧滑动 。循环以上步骤,取所有局部解的最大值。代码如下:...

2020-04-11 21:11:41 142 1

原创 只出现一次的数字

只出现一次的数字解析设置两层循环,碰到值相同的就break,否则继续,若内层循环能到底则能确定出只出现一次的数字。代码如下:结果:

2020-04-11 19:50:52 152

原创 反转字符串

反转字符串解析设置循环,次数为长度除以2,把前后对应的元素调换即可。代码如下:结果:

2020-04-02 20:03:12 77

原创 最长公共前缀

最长公共前缀解析首先定义一个字符串a用来存储公共前缀,然后设置两层循环,逐个取第一个字符串的每个子字符,然后和后面的string元素的对应索引的子字符进行比对,若相同则把公共的字符加入a,不同则直接返回定义的字符串a。若都相同,最后再返回a。代码如下:结果:...

2020-04-02 19:50:15 117

原创 滑动窗口最大值

滑动窗口最大值解析定义一个输出数组,元素个数为需要输出元素的个数。然后通过两个for循环,确定出每次窗口内的最大数,存入输出数组。代码如下:结果:...

2020-03-29 11:16:03 144

原创 设计循环双端队列

设计循环双端队列解析通过数组来实现,并且数组长度要比容量大1,用于判断队列为空还是为满,并且多出的这个1不存元素。开始头指针和尾指针都设为0,然后编写代码依次实现函数。判断队列是空还是满:空则是头指针=尾指针,满则是尾指针加1对长度取余后=头指针。代码如下:结果:...

2020-03-29 11:08:18 78

原创 整数反转

整数反转解析设置while循环,每次取数字的最后一位数,然后乘10。要注意溢出的情况,即反转后可能超出int的最大,最小值。若超出,则返回0.代码如下:结果:...

2020-03-29 10:46:57 49

原创 逆波兰表达式求值

逆波兰表达式求值解析设置while循环遍历所有元素,若碰到非+,-,*,/,则转化为整型:int parse()。然后入栈,碰到运算符则取栈前两元素出栈进行运算,运算完再入栈,如此重复,最后返回栈首元素。代码如下:结果:...

2020-03-22 10:29:11 100

原创 最小栈

最小栈解析设置两个栈,一个是正常的栈,一个是判断的栈:若输入元素小于栈首元素,则入栈。对应的函数根据这个思路就能编出。代码如下:结果:...

2020-03-22 10:21:44 54

原创 有效的括号

有效的括号解析本题需要通过栈来实现,首先排除输入的括号数为奇数和首字符为右括号的情况,然后定义一个栈,用foreach来按顺序遍历所有元素,若碰到左括号就入栈,碰到右括号就查找栈首元素是否与之匹配,匹配则继续,不匹配则返回false。若都匹配,则最后返回true。代码如下:结果:...

2020-03-22 10:13:54 71

原创 环形链表

环形链表解析设置快慢指针fast,slow,快指针一次移动两个节点,慢指针一次移动一个节点,若是环形链表,则在循环中定会相遇,若快指针fast或fast.next出现null,则不为环形链表。代码如下:结果:...

2020-03-15 10:41:20 86

原创 合并两个有序链表

合并两个有序链表解析首先新建一个链表,再建一个指针,判断两个链表的头节点data的大小,小的节点进入新链表并且该链表指针往后一位,如此重复,直到合并完为止,若出现一个链表提前被合并完,则另一个链表直接并入新链表。代码如下:结果:...

2020-03-15 10:33:15 177

原创 删除排序链表中的重复元素

删除排序链表中的重复元素解析此题只需要判断相邻节点是否相同即直接判断当前节点和下一节点是否相同。若相同则把下个节点指针移到下下个节点,不相同就把当前指针下移。代码如下:结果:...

2020-03-15 10:22:41 74

原创 买卖股票的最佳时机二

买卖股票的最佳时机二(第八次作业)本题只需要把后一项比前一项大的值依次加起来即可,后一项比前一项小则不用考虑。代码如下:结果:

2020-03-08 13:01:04 71

原创 用户猜随机数

用户猜随机数(第七次作业)首先先获取一个电脑产生的随机数,然后设置一个循环,因为是1—100的随机数,所以循环设置最多100次,在循环中,对比输入的数与电脑产生的随机数大小,过大则输出过大并跳出该次循环,过小则输出过小并跳出该次循环,等于随机数时输出“您猜对了”并用break跳出整个循环。代码如下:结果:...

2020-03-08 12:22:23 301

原创 买卖股票的最佳时机

买卖股票的最佳时机的解析(第六次作业)首先考虑数组为空或只有一个元素的情况,这是返回值就是0。之后就是正常情况,设置两个循环,并设一个变量进行赋值,把循环中的每个差值和刚刚设的变量进行比较找到最大差值,最后输出最大差值。代码如下:class Solution {public:int maxProfit(vector& prices) {if(prices.size()<=...

2020-03-01 13:19:54 72

原创 合并两个有序数组

合并两个有序数组的解析(第五次作业)分两步进行,第一步合并数组,第二步使合并的数组为有序数组。第一步通过一个循环,把数组二的值赋给数组一的后面,第二步就进行元素大小比较并换位,通过两个循环实现。代码如下:public class Solution {public void Merge(int[] nums1, int m, int[] nums2, int n) {int k;for(...

2020-03-01 13:06:01 99

原创 最大子序和

最大子序和的解析(第四次作业)设置两个循环,暴力破解,通过sum进行标记,依次求出每个数与后面数的和的最大值max,最后输出最大值即可。代码如下:public class Solution {public int MaxSubArray(int[] nums) {int sum=nums[0];int max=nums[0];int len=nums.Length;for(int ...

2020-03-01 12:59:06 60

原创 移除元素

移除元素的解析(第三次作业)先定义一个a=0作为指针用途,再获取数组长度:nums.size()。然后设置一个循环,如果val!=nums[i],则只需要a++,如果val==nums[i],则需要再设置一个从后往前的循环截止到一层循环的i的后一位,找到与val值不同的元素调换顺序然后a++,并且跳出该循环。代码如下:class Solution {public:int removeEl...

2020-02-23 10:11:39 71

原创 删除排序数组中的重复项

删除排序数组中的重复项(第二次作业)通过定义一个整型变量a=0,来作为一个指针的用途,首先获取数组长度:nums.size()。用一个循环来进行判断,如果后一项和前一项不一样,则先a=a+1,同时把循环到的元素赋值给nums[a],以此类推,结束循环后返回长度a+1。代码如下:class Solution {public:int removeDuplicates(vector& ...

2020-02-23 09:59:27 49

原创 两数之和

求两数之和问题的解析(第一次作业)此题的求解可以通过设置两次循环,外层循环是遍历除最后一位元素的所有元素,内层循环是遍历外层循环到的元素之后的元素,通过两次循环判断是否有target==nums[i]+nums[j]的情况,如果有则返回两数。如果没有,则返回值为0.代码如下:class Solution {public:vector twoSum(vector& nums, in...

2020-02-23 09:49:31 46

空空如也

空空如也

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

TA关注的人

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