自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 课程表Ⅱ

题目: 思路: 基本和207题一样,只不过增加一个数组来存学习的课程顺序。 需要注意的入栈的判断语句紧挨着入度操作减1,一旦有减过后等于0的,就要入栈操作了。 空整型数组的定义。 代码: ```csharp public class Solution { public int[] FindOrder(int numCourses, int[][] prerequisites) { Stack<int> stack=new Stack<int>();

2020-05-14 18:54:11 162

原创 课程表

题目: 思路 拓扑排序的思想。 定义一个栈,一个数组存储各个课程的入度,课程的入度为0时入栈,栈不为空时出栈。 出栈一次,表示学习相应课程,记录相应数目,等于课程数目时表示可以学完所有课程。 代码: public class Solution { public bool CanFinish(int numCourses, int[][] prerequisites) { int len=prerequisites.Length; if(len==0)return true;

2020-05-14 09:49:58 325

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

题目: 思路: 在树的结构中,关键是运用递归的思想。 确定递归终止条件,就是不需要在进行递归了即不需要在求左右子树的结果,在本题中如果检验的结点为null或者检验的结点即为所求,就不需要进行下去了。 分析求得的左右子树结果怎样处理,左右子树有两种结果,一个为null,一个为该结点,两个子树结果若都不为null,则说明两个结点分别为所给的两个结点,此时树根即为最终结果。 代码: /** *...

2020-05-03 16:23:57 194

原创 二叉树的最大深度

题目: 思路: 采用递归的主要思想。 确定递归终止条件,即结点为null。 模拟递归过程,即获得左右子树的最大深度,求出最大值加1,即为整个树的最大深度。 代码: /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode ...

2020-05-02 17:13:11 141

原创 对称二叉树

题目: 代码: /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; * public TreeNode(int x) { val = x;...

2020-04-26 20:43:36 89

原创 相同的树

题目: 代码: /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; * public TreeNode(int x) { val = x;...

2020-04-26 20:22:53 79

原创 格雷编码

题目: ##### 代码: public class Solution { public IList<int> GrayCode(int n) { IList<int>lst=new List<int>{0}; int len; for(int i=0;i<n;i++) { len=lst....

2020-04-19 19:26:51 92

原创 子集

题目: 代码: public class Solution { public IList<IList<int>> Subsets(int[] nums) { IList<IList<int>>lst=new List<IList<int>>(); lst.Add(new List<int&g...

2020-04-19 11:31:19 113

原创 只出现一次的数字

题目: 代码: public class Solution { public int SingleNumber(int[] nums) { HashSet<int>set=new HashSet<int>(); for(int i=0;i<nums.Length;i++) { if(!set.Add(nums[...

2020-04-12 21:49:10 80

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

题目: 代码: class Solution { public: int lengthOfLongestSubstring(string s) { if(s.size()==0) return 0; unordered_set<char> lookup; int maxo=0; int left=0; for(i...

2020-04-12 21:24:06 85

原创 反转字符串

题目: 代码: class Solution { public: void reverseString(vector<char>& s) { int n=s.size(); for(int i=0;i<n/2;i++) { if(s[i]==s[n-1-i]) continue; ...

2020-04-06 20:17:36 125 1

原创 最长公共前缀

题目: ##### 代码: class Solution { public: string longestCommonPrefix(vector<string>& strs) { if(strs.empty()) return string(); string result=""; ...

2020-04-06 16:39:34 97

原创 滑动窗口最大值

题目: 代码: class Solution: def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: n=len(nums) if n*k==0: return [] return[max(nums[i:i+k])for i in ...

2020-03-29 20:02:47 96

原创 设计循环双端队列

题目: 代码: class MyCircularDeque { private int capacity; private int [] arr; private int front; private int rear; /** Initialize your data structure here. Set the size of the deque t...

2020-03-28 20:04:09 134

原创 整数反转

题目: 代码: class Solution { public int reverse(int x) { int res=0; while(x!=0) { int temp=x%10+res*10; if((temp-x%10)/10!=res) { return 0; ...

2020-03-28 15:16:52 75

原创 逆波兰表达式求值

题目: 代码: class Solution { public: int evalRPN(vector<string>& tokens) { stack<int> temp; for(int i=0;i<tokens.size();i++) { if(tokens[i].size()==1&&am...

2020-03-22 19:39:33 105

原创 最小栈

题目: 代码: 补充:

2020-03-22 17:29:38 89

原创 有效的括号

题目: 代码: class Solution: def isValid(self, s: str) -> bool: stack=[] hashtable={'(':')','[':']','{':'}'} for i in s: if(i in hashtable): stac...

2020-03-22 16:58:54 82

原创 环形链表

题目: 1.思路: 通过使用两个快慢指针遍历链表,其中快指针一次循环移动两步,慢指针一次循环移动一步。 若有环形链表,则循环以快慢指针相等结束,若没有环形指针,则循环以快指针到达尾部结束。 2.代码: public class Solution { public bool HasCycle(ListNode head) { if(head==null||head.nex...

2020-03-14 19:15:35 131

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

题目: 1.思路: 用temp遍历所有结点。 将当前的值与后面结点的值比较以确定是否为重复结点。 若重复则跳过下一个结点,使其指向下一个结点之后的结点。 2.代码: public class Solution { public ListNode DeleteDuplicates(ListNode head){ ListNode temp=head; if(head==null) ...

2020-03-13 22:12:58 182

原创 合并两个有序链表

题目: 1.思路: 定义一个头结点result。 判断l1指向的结点值与l2指向的结点值,找出较小的结点位置。 链接到result的next位置。 以l1或l2为null为循环结束条件。 2.代码: public ListNode MergeTwoLists(ListNode l1, ListNode l2) { ListNode result=new ListN...

2020-03-12 19:12:54 138

原创 城市窗体

题目: 运行效果: 1.思路: 先创建一个满足题目要求的窗体结构。 创建一个线性表接口,以及用链式存储结构实现这个线性表,使其实现插入,删除,更新等操作。 在主窗口完成封装。 由于 刚刚接触线性表,所以参考了别人的代码,敬请谅解。 2.代码: ...

2020-03-08 21:49:55 165

原创 一起来猜数

题目: 思路: 代码: { static void Main(string[] args) { int n; int count = 1; Console.WriteLine("猜测一个100以内的整数。"); Console.Write("第1次猜,请输入一个整数:"); ...

2020-03-08 11:08:15 243

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

题目: 1.思路: 由于可以多次买卖股票,所以我们可以找到所有能获利的买卖方式,然后进行累加。 我们使用两个快慢变量,只要j的值大于i的值时,就把差值加入sum中。 2.代码: ...

2020-03-08 09:49:11 71

原创 买卖股票的最佳时机

题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。 1.思路: 初始利益赋值为零。 依次遍历数组中的每一个元素,算出在每个元素之后的元素与该元素的差值,若大于目前算出的利益值,则更新利益值。 2.代码: public: int maxProf...

2020-02-29 22:25:43 147

原创 合并两个有序数组

题目:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 1.思路: 设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 首先将nums2中的元素简单合并到nums1中,具体放在nums1本来元素的后面。 其次将新的...

2020-02-29 14:06:03 300

原创 最大子序和

题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 1.思路: 暴力法,其中一个for循环遍历数组中的所有元素,再用一个for循环确定该元素开头的连续子数组最大和。 找某个元素开头之后的最大连续子数组和时,需在开始前更新sum=0,否则会得到错误答案。 该方法思路简单,但过程比较繁杂。 2.代码: public: int maxSubA...

2020-02-28 12:08:00 93

原创 移除元素

题目:给定一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,返回移除后数组的新元素不要使用额外的数组空间,你必须在原地修改输入数组并在使用 o(1) 额外空间的条件下完成。 1.思路: 我们使用一个变量i记录不等于val的数组元素 我们使用另一个变量j遍历数组中的所有元素。 思路与删除排序数组中的重复项类似。 2.代码: public: int removeEle...

2020-02-22 22:30:08 57

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

题目二:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用o(1)额外空间的条件下完成。 ...

2020-02-22 21:35:06 83

原创 两数之和

题目:给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。 1.思路 遍历每一个元素nums[i],查找是否存在元素nums[j],与其满足nums[i]+nums[j]target. 若存在,则返回他们的数组下标。 使用较为熟悉的C++语言实现。 2.代码 public: vector<int> twoSum(...

2020-02-21 17:26:35 85

空空如也

空空如也

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

TA关注的人

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