- 博客(42)
- 收藏
- 关注
原创 28课程表(2)
力扣练习题 题目分析及代码实现 class Solution { public int[] findOrder(int numCourses, int[][] prerequisites) { int[][] Group=new int[numCourses][numCourses]; int[] rd=new int[numCourses];//记录入度的数组 int[] result=new int[numCourses]; int m=
2020-05-17 15:23:06
276
2
原创 27课程表
力扣练习题 207课程表 题目分析及代码 主要是利用邻接矩阵来存储图的结构,然后找到各个节点的入度,将入度为零的节点入队然后删除与此节点相连的边,然后再将入度为零的节点入队,出队,直到队列中无节点。 class Solution { public boolean canFinish(int numCourses, int[][] prerequisites) { int[][] matrix = new int[numCourses][numCourses]; // i -&g
2020-05-17 15:12:47
216
原创 26二叉树的最大深度
力扣练习题 题目分析及代码实现 我们利用二叉树使用队列的层次遍历来对二叉树进行下一层遍历是使二叉树的深度deep++ /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNo...
2020-05-03 15:51:23
152
原创 25二叉树的最近公共前缀
力扣练习题 题目分析及代码实现 因为lowestCommonAncestor(root, p, q)的功能是找出以root为根节点的两个节点p和q的最近公共祖先,所以递归体分三种情况讨论: 如果p和q分别是root的左右节点,那么root就是我们要找的最近公共祖先 如果p和q都是root的左节点,那么返回lowestCommonAncestor(root.left,p,q) 如果p和q都是roo...
2020-05-03 15:40:53
216
原创 24相同的树
力扣练习题 100相同的树 题目分析及c#代码实现 还是递归方法的运用,首先我们要判断出递归结束的条件,只有当最后的节点内容为空,返回true,递归条件是当递归的节点内容相同并且不为空,递归他们的左孩子与右孩子。 /** * Definition for a binary tree node. * public class TreeNode { * public int val; ...
2020-04-23 14:58:16
131
原创 23对称二叉树
力扣练习题 101对称二叉树 题目分析及c# 代码实现 解决树,以及二叉树的问题主要是掌握递归方法的运用,以及树的几种遍历递归方法遍历二叉树 /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * ...
2020-04-23 14:47:18
147
原创 22格雷编码
力扣练习题 89格雷编码 题目分析及c#代码实现 解决这道题主要是能够解决格雷编码的数学逻辑,就是找规律,我查了一下资料,有好几种解释,选了其中按位运算的一种,就是将给定的数从0到这个数(i^(i/2))就可以得到编码。 public class Solution { public IList<int> GrayCode(int n) { IList<i...
2020-04-18 22:03:26
189
原创 21子集
力扣练习题 78子集 题目分析及c#代码实现 我们利用二进制的位运算2的nums的长度次方为子集的列表长度,我们需要最长nums的长度的二进制来进行计算保留子集,对每一个二进制数上的每一位分别对1的左移取与运算,如果不为零就为一个子集的一部分(按左移的数k来取nums[k])。 public class Solution { public IList<IList<int>...
2020-04-18 21:53:33
159
原创 20只出现一次的数字
力扣练习题 136只出现一次的数字 题目分析及c#代码 利用二进制位运算参考一位大佬的博文 链接: link. 两次和零的异或位运算后Hi出现一次的数保持不变。 public class Solution { public int SingleNumber(int[] nums) { if (nums.Length==0) return 0; int result=0; for(int ...
2020-04-12 18:45:51
110
原创 19无重复字符的最长子串
力扣练习题 3无重复字符的最长子串 c#代码实现 public class Solution { public int LengthOfLongestSubstring(string s) { if(s.Length==0) return 0; int[] result=new int[s.Length]; result[...
2020-04-12 18:37:34
144
原创 18反转字符串
力扣练习题 344反转字符串 分析及c#代码实现 利用一头一尾的两端元素,进行递加递减,来交元素位置,或者直接调用函数实现。 public class Solution { public void ReverseString(char[] s) { if(s.Length==0) return; Array.Reverse(s); } } public class Solut...
2020-04-06 16:23:43
156
原创 17最长公共前缀
力扣练习题 14最长公共前缀 分析及c#代码实现 通过遍历整个字符串数组,用双指针的办法可以实现,一个用来存储第一个和第二个的最长的公共前缀,然后另外一个遍历其他数组元素,找到最长的公共前缀。 public class Solution { public string LongestCommonPrefix(string[] strs) { if(strs.Length==0) retu...
2020-04-06 16:02:19
189
原创 16滑动窗口最大值
力扣练习题 239滑动窗口最大值 c#代码实现 public class Solution { public int[] MaxSlidingWindow(int[] nums, int k) { int n = nums.Length; if (n == 0) return new int[0]; if (k == 1) return nums; int [] left = new ...
2020-03-29 22:29:18
177
原创 15设计双端循环队列
力扣练习题 641设计双向循环队列 c#及代码实现 public class MyCircularDeque { private int[] nums; private int head = 0; private int tail = 0; private int count = 0; public MyCi...
2020-03-29 21:57:44
153
原创 14整数反转
力扣练习题 整数反转 题目分析及c#实现 利用对十整除及取余来对每位上的数读取然后再反转输出。 public class Solution { public int Reverse(int x) { { long result = 0; while (x != 0) { ...
2020-03-29 19:49:56
161
原创 13最小栈
力扣练习题 155 最小栈 题目分析及代码实现 使用一个栈存储最小值,每次要入栈值时,如果最小栈不存在值,则同时将此值直接存入最小栈,否则比较入栈的值是否小于等于最小栈的栈顶的值,如果成立,则同时在最小栈Push该值,每次出栈时,比较该值时候等于最小栈的栈顶的值,如果相等,则同时在最小栈顶端移除该值。 获取最小值时直接弹出最小栈的栈顶即可。 public class MinStack { ...
2020-03-21 20:02:44
153
原创 12逆波兰表达式
力扣练习题 150逆波兰表达式 题目分析及代码实现 我们首先利用栈将数组中的数字字符串转化为整形后添加到栈中,取栈顶的两个元素判断运算类型后,进行运算得到的数在添加到栈中,最后取栈顶的那个数返回。 public class Solution { public int EvalRPN(string[] tokens) { Stack<int> s = new S...
2020-03-21 19:26:40
132
原创 11有效的括号
力扣练习题 20 有效的括号 分析及c#实现 利用栈的特性,从头进入,从头出,当字符串中是左括号是存入栈,当字符串中是右括号时将栈顶的元素取出,判断是否匹配,要注意如果是右括号时,栈为空需要输出false。代码如下 public class Solution { public bool IsValid(string s) { Stack<Char> stack...
2020-03-21 16:57:41
187
原创 10环形链表
力扣练习题 141环形链表 题目分析及代码实现 我们利用双指针,其实是两个在链表中有不同遍历速度的指针,当快的指针与慢的指针可以指向同一个节点时,则链表中有环。 /** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNode nex...
2020-03-15 20:22:00
195
原创 9删除排序链表中的重复元素
力扣练习题 83删除排序链表中的重复元素 题目分析及代码实现 我们利用双指针和数组的删除重复元素一样,一个来储存不重复的元素,另一个来遍历链表, /** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNode next; * ...
2020-03-15 19:44:14
142
原创 8合并两个有序链表
力扣练习题 21合并两个有序链表 题目分析及代码实现 首先创建一个新的链表来返回我们合并好的链表,只有一个头节点。然后两个指针分别指向l1,l2进行遍历,新链表的结点指向遍历中值小的节点。 public ListNode MergeTwoLists(ListNode l1, ListNode l2) { //创建一个新的结果链表 ...
2020-03-15 19:22:52
136
原创 数据与结构练习题
单向链表的应用 练习题目 第二次做c#得窗体应用程序,还是不太会做,参考大佬的代码,自己一点点看懂后,打上去的。运行后 这里我把自己写的链表的代码粘贴一下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DataStruct2020 { ...
2020-03-10 23:05:22
120
原创 7股票的最大利润
力扣练习题63 题目: c++代码实现 这道题目相对简单,我们可以用两个变量来模拟买入卖出,price表示我买入是的价格,profit表示我卖出时的利润,因为只考虑一笔交易,我们要找出最小的成本price,如果在最后一天买入,必然不会有利润,profit为零,其他情况只要最小price后面的最大数减去price,就是最大利润。 代码如下: class Solution { public:...
2020-03-08 08:20:05
145
原创 数据与结构练习题
小游戏:猜大小 游戏规则: 设计程序,随生成一个1到100的随机数,让用户去猜这个数的大小,若数大于此数,返回“数太大,请重新输入。”太小则返回“”太小,重新输入。”当等于此数时,返回“猜对了,恭喜。” c#程序设计 1.采用Random函数生成一个1到100的随机数。 2.设计循环i从0到99次,提醒用户输入一个数,然后进行判断此数与随机数的大小,如若,此数与随机数大小相等,break,停止循环...
2020-03-08 08:04:59
176
原创 6买卖股票的最佳时机(2)
力扣练习题122 买卖股票的最佳时机 c#代码实现 我们在分析例子时会发现,按题目的要求只能买进一只股票,买完再卖,差距的最大值可能为最大利益,比较就会发现,其实在两天只要是利润为正的情况下,就可以实现利润加之和最大,代码如下: public class Solution { public int MaxProfit(int[] prices) { int maxpro=0; for(i...
2020-03-01 10:26:36
166
原创 5合并两个有序数组
力扣练习题88 合并两个有序数组 c#代码实现 我们可以考虑前序遍历两个数组,或者后序遍历数组,但要注意数组长度的取值不要越界,以后序遍历为例,在正常比较到最后,因为循环的数是要递减的,所以会出现一个循环数先到负值的情况,要进行判断,代码如下: public class Solution { public void Merge(int[] nums1, int m, int[] nums...
2020-03-01 10:16:21
199
原创 4最大子序和
力扣练习题58 最大子序和 c#代码实现 首先定义一个数组sums[]和max,我们将nums[]的第一个数传到sums[]的第一个位置和max,然后将nums[]遍历,每次循环都将nums[]中的位置上的数与sums[]中对应的前一位置上的数相加,再与此时nums[]位置上的数进行比较,将较大的数传到nums[]对应的位置上,再将max与nums[]上的数比较大的数传给max,则nums[]就...
2020-03-01 09:17:06
167
原创 3移除元素
力扣练习题 移除元素 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 num...
2020-02-20 21:41:01
238
原创 2排除数组中的重复项
力扣练习题2 删除排序数组中的重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面...
2020-02-20 21:17:42
209
原创 1两数之和
力扣练习题1 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]...
2020-02-20 21:09:14
288
原创 Day12:python的模块
import 语句 想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下: import module1[, module2[,… moduleN] 当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。 搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 support,需要把命令放在脚本的顶端: support.py 文件代码 #!...
2019-11-05 20:16:31
115
原创 DAY11:PYTHON魔方方法
魔方方法是Python类的专有方法 #!/usr/bin/python3 class Vector: def __init__(self, a, b): self.a = a self.b = b def __str__(self): return 'Vector (%d, %d)' % (self.a, self.b) de...
2019-11-04 19:52:56
274
原创 DAY10:python的类与对象
面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 方法:类中定义的函数。 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进...
2019-11-02 16:07:16
164
原创 python的else与with语句
else语句 在python中else语句除了和if搭配使用外,还有其他用途: 1.要么怎样,要么不怎么样 。其中涉及到if语句 在这里插入图片描述 2.干完了能怎样,干不完就别想怎样 和while和for语句配合 lse语句的内容只有在循环顺利执行完成后才会执行,如果有break跳出循环了,那么else语句就不会执行 a=list(range(10)) for i in a: if i>5...
2019-10-31 20:44:23
170
原创 Day9:python的异常处理
python的错误与异常 语法错误 Python 的语法错误或者称之为解析错,是初学者经常碰到的,如下实例 >>>while True print('Hello world') File "<stdin>", line 1, in ? while True print('Hello world') ^ SyntaxEr...
2019-10-30 20:11:21
123
原创 Day8:Pytho的文件与文件系统
Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档。 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式。此函数把你传递的表达式转换成一个字符串表达式。 input函数 input([prompt]) 函数和raw_input([prompt]) 函数基本可以互换,但是input会假设你的输入是一个有效的Pytho...
2019-10-28 20:08:32
130
原创 Day7:Python的字典与集合
Python的字典 字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。 dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258...
2019-10-27 20:36:01
190
原创 Day6:函数与Lambad表达式
Python的函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。 任何传入参数和自...
2019-10-25 22:05:17
158
原创 Day 4:字符串与序列
Python的字符串 字符串是Python常用的数据类型。我们可以使用引发号来创建字符串。 Pyrhon访问自负更换中的值 Python不支持单字符类型,单字符也作为字符串使用。访问字符串时可以用方括号截取字符串。如以下示例: #!/usr/bin/python var1 = 'Hello World!' var2 = "Python w3cschool" print "var1[0]: ...
2019-10-24 18:27:24
176
原创 Day3:python的列表与元组
Python 列表(Lists) 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。 Python有6个序列的内置类型,但最常见的是列表和元组。 序列都可以进行的操作包括索引,切片,加,乘,检查成员。 此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。 列表是最常用的Python数据类型,它可...
2019-10-22 17:17:03
187
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅