自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (2)
  • 收藏
  • 关注

原创 LeetCode 39 组合总数

LeetCode 39 组合总数给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2:输入:candidates = [2,3,5

2020-12-31 13:12:24 114

原创 [LeetCode 51]N皇后

[LeetCode 51]C++实现N皇后n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入:4输出:[[".Q…", // 解法 1“…Q”,“Q…”,“…Q.”],["…Q.", // 解法 2“Q…”,“…Q”,“.Q…”]]解释: 4 皇后问题存在

2020-11-18 19:50:19 112

原创 [剑指 Offer 65] 不用加减乘除做加法

[剑指 Offer 65] 不用加减乘除做加法写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例:输入: a = 1, b = 1输出: 2链接:https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/class Solution {public: int add(int a, int b) { while(b != 0) {

2020-11-14 11:49:05 104

原创 [LeetCode 22]括号生成

[LeetCode 22]括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]来源:力扣(LeetCode 22)链接:https://leetcode-cn.com/problems/generate-parentheses方法:回溯剪枝class Solution {public: void rec

2020-11-14 11:44:41 91

原创 [LeetCode 40]组合总和II

[LeetCode 40]C++组合总和II给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6

2020-11-13 22:03:09 61

原创 [LeetCode 90]子集II

[LeetCode 90]子集给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets-ii方法:先排序nums,再用set去重class Solution {public: void recurs

2020-11-13 16:48:13 49

原创 [LeetCode 78]子集I

[LeetCode 78]C++实现子集给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets方法1、回溯法class Solution {public: void

2020-11-13 16:11:30 57

原创 [LeetCode 871]最低加油次数

[LeetCode 871]C++实现最低加油次数汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 station[i][1] 升汽油。假设汽车油箱的容量是无限的,其中最初有 startFuel 升燃料。它每行驶 1 英里就会用掉 1 升汽油。当汽车到达加油站时,它可能停下来加油,将所有汽油从加油站转移到汽车中。为了到达目的地,汽车所必要的最低加油次数是

2020-11-12 22:47:24 160

原创 [LeetCode 452]用最少数量的箭引爆气球

[LeetCode 452]C++用最少数量的箭引爆气球在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可

2020-11-11 20:47:56 86

原创 [LeetCode 45]跳跃游戏II

[LeetCode 45]C++跳跃游戏II给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后一个位置。来源:力扣(LeetCode 45)链接:https://leetco

2020-11-11 16:39:17 70

原创 [LeetCode 328]奇偶链表

[LeetCode 328]C++奇偶链表给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1-&gt

2020-11-11 15:08:21 64

原创 [LeetCode 725]分割链表

[LeetCode 725]C++分割链表给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。返回一个符合上述规则的链表的列表。举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4], null ]示例 1:

2020-11-11 14:23:15 65

原创 [LeetCode 234]回文链表

[LeetCode 234]C++实现回文链表请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: truehttps://leetcode-cn.com/problems/palindrome-linked-list/ (LeetCode 234)方法1、快慢指针翻转比对class Solution {public: bool isPalindrome(ListNode* head) {

2020-11-10 22:50:21 156

原创 [LeetCode 445]两数相加II

[LeetCode 445]C++实现两数相加II给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 8 -> 0 -> 7来源:力扣(Le

2020-11-10 21:38:57 55

原创 [LeetCode 24]两两交换链表中的节点

[LeetCode 24]C++实现两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs方法1、迭代h

2020-11-10 18:19:27 69

原创 [LeetCode 19]删除链表的倒数第N个节点

[LeetCode 19]C++实现删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list方

2020-11-10 14:55:55 62

原创 [LeetCode 83]删除排序链表中的重复元素

[LeetCode 83]C++实现删除排序链表中的重复元素给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-listclass Solution {

2020-11-10 10:58:22 54

原创 [LeetCode 55]跳跃游戏

[LeetCode 55]C++跳跃游戏I给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可

2020-11-09 20:41:24 71

原创 [LeetCode 402]移掉K位数字

class Solution {public:string removeKdigits(string num, int k) {vector stack;//将vector当做栈string result="";for(int i=0;i<num.length();++i){//从高位循环到低位int number=(int)num[i];//栈顶元素大于numberwhile(stack.size()!=0&&stack[stack.size()-1]>numb

2020-11-09 17:22:22 74

原创 [LeetCode 376]摆动序列

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201108152007482.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Nhc2VyMTMw,size_16,color_FFFFFF,t_70#pic_center

2020-11-08 15:49:34 62

原创 [LeetCode 455]发饼干

[LeetCode 455]分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两

2020-11-08 14:43:33 77

原创 [LeetCode 295]数据流的中位数(优先队列实现)

[LeetCode 295]C++实现数据流的中位数中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。示例:addNum(1)addNum(2)findMedian() ->

2020-11-08 10:18:31 161

原创 [LeetCode 215]数组中的第K个最大元素

[LeetCode 215]C++实现求数组中的第K个最大元素在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-a

2020-11-07 21:19:27 53

原创 [LeetCode 946]验证栈序列

[LeetCode 946] C++实现验证栈序列给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3), push(4), pop() -> 4,pu

2020-11-07 15:36:52 111

原创 [LeetCode 155]最小栈

[LeetCode 155]C++实现最小栈设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。来源:力扣(LeetCode 155)链接:https://leetcode-cn.com/problems/min-stackclass MinStack {public: stack<int&

2020-11-06 20:27:11 51

原创 [LeetCode 225]用队列实现栈

[LeetCode 225]C++实现用队列实现栈使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。

2020-11-06 20:13:57 43

原创 [LeetCode 232]用栈实现队列

[LeetCode 232]C++实现用栈实现队列请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有 push to top,

2020-11-06 19:37:30 62

原创 [LeetCode 160]相交链表

[LeetCode 160]C++实现相交链表示例:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个

2020-11-06 17:37:40 65

原创 [LeetCode 92]链表逆序

[LeetCode 92]C++实现链表逆序反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL来源:力扣(LeetCode 92)链接:https://leetcode-cn.com/problems/reverse-linked-list-ii//方法1、迭代

2020-11-06 17:31:54 191

原创 [LeetCode 23]合并K个升序链表

[LeetCode 23]C++实现合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6来源

2020-11-06 15:53:15 95

原创 [LeetCode 141,LeetCode 142]链表是否有环

[LeetCode 141,LeetCode 142]C++实现判断链表是否有环,及环的入口位置1-a: 判断是否有环https://leetcode-cn.com/problems/linked-list-cycle/(LeetCode 141)//方法1、利用STL中setclass Solution {public: bool hasCycle(ListNode *head) { set<ListNode*>s; while(head){

2020-11-05 22:20:30 60

原创 [LeetCode 86]分隔链表

[LeetCode 86]C++实现分隔链表要求:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。链接:https://leetcode-cn.com/problems/partition-list/ (LeetCode 86)//方法: 利用建立两个头指针class Solution {public: ListNode* partition(ListNode* head, int x)

2020-11-05 22:15:15 50

原创 [LeeCode 138]复制带随机指针的链表

复制带随机指针的链表给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:-----val:一个表示 Node.val 的整数。-----random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。来源:力扣(LeetCode 138)链接:https:

2020-11-05 22:00:44 157

教室管理系统

课程题目:教室管理系统 内容要求:(1)学生通过这个功能,可以查询相关院系相关教师的个人信息以及开课信息,以便能更好地了解教师及其开课情况。 (2)学生通过这个功能,可以查询相关教学楼相关教室的信息以及该教室在每天任一时段的使用情况,或者有课,或者有讲座、或者有活动等等。这个功能以便使同学能更好地了解教室及其使用情况。 (3)学生通过这个功能,可以查询某一课程的详细信息,如同一课程可以有多个教师开课,以便更好地了解任一课程的详细信息。 (4)学生通过这个功能,可以借教室,即获得教室在某段时间的使用权,办讲座,开展社团活动等等。 (5)学生通过这个功能,可以查询当天某一时段或多个时段的空闲教室,去上自习。

2018-08-03

空空如也

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

TA关注的人

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