自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不明所以打酱油的博客

来都来了......

  • 博客(12)
  • 收藏
  • 关注

原创 每天一道算法题_012_重建搜索二叉树

给定一个数组,数组中存放的是一颗二叉搜索树的后续遍历的结果。重建这个二叉搜索树,并返回其根节点。nums = {2,3};struct ListNode{ int val; ListNode *left; ListNode *right; ListNode(int num):val(num),left(nullptr),right(nullptr){}};ListNode *reBuildBST(std::vector<int> &nums,int left, i.

2021-06-29 10:25:39 101

原创 每天一道算法题_011_数组中的第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输出: 4215. 数组中的第K个最大元素 //首先想到的应该是堆 int findKthLargest(vector<int>& nums, int k) { //维护K个元素的最小堆 std.

2021-06-24 21:15:50 47

原创 每天一道算法题_010_合法的出栈序列

给定 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,push(5), pop() -> 5, pop().

2021-06-24 20:20:08 107

原创 每天一道算法题_009_复杂链表的深度拷贝

已知一个复杂的链表,节点中有一个指向本链表任意某个节点的随机指针(也可以为空),求这个链表的深度拷贝。struct ListNode{ int val; ListNode *next; ListNode *random; ListNode(int num):val(num),next(nullptr),random(nullptr){}};ListNode *deepCopy(ListNode *head){ //如果头节点为空 或只有一个头结点 直接返回头结点即可 if(!he.

2021-06-22 22:13:59 61 1

原创 每天一道算法题_008_链表划分

给定一个链表头指针head,和数值num,将小于num值的节点放在左边,大于或等于num值的节点放在右边。保持这些节点原来的相对位置不变。head = 1->3->5->4->2->7->9->NULL, num=5res = 1->3->4->2->5->7->9->NULLstruct ListNode{ int val; ListNode *next; ListNode(int num):val(n.

2021-06-20 22:02:04 46

原创 每天一道算法题_007_查找相交链表的相交节点

给定两相交链表,返回第一个相交节点struct ListNode{ int val; ListNode *next; ListNode(int num):val(num),next(nullptr){}};ListNode *getInterSectionNode(ListNode *head1,ListNode *head2){ //对STL熟悉的话,可以想到用set来解决该问题 if(!head1 || !head2) return nullptr; std::set&l.

2021-06-20 21:09:55 60

原创 每天一道算法题_006_合并K个有序链表

给定K个有序链表,将其合并成一个有序链表1->3->5->7->NULL2->4->6->8->NULL2->5->9->10->NULLres = 1->2->2->3->4->5->5->6->7->8->9->10->NULLstruct ListNode{ int val; ListNode *next; ListNode(int nu.

2021-06-20 20:52:27 51

原创 每天一道算法题_005_找出环形链表的入口点

给定一链表头结点,如果是环形链表,返回其入口点节点。struct ListNode{ int val; ListNode *next; ListNode(int num):val(num),next(nullptr){}};ListNode *cycleList(ListNode *head){ //老规矩 if(!head || !head->next) return head; ListNode *slow = head; ListNode *fast = hea.

2021-06-19 08:51:44 90

原创 每天一道算法题_004_判断链表是否有环

判断给定的链表是否有环struct ListNode { int val; ListNode *next; ListNode(int num):val(num),next(nullptr){}};bool hasCycle(ListNode *head){ //老规矩 if(!head || !head->next) return false; //使用快慢指针 //就像绕着操场跑 锻炼的总是能追上磨磨唧唧走路的 ListNode *slow = head; L.

2021-06-18 20:43:25 70

原创 每天一道算法题_003_两有序链表合并

给定两个有序链表,将其合并成一个有序链表link1 = 1->3->5->NULL, link2 = 2->4->6->NULLres = 1->2->3->4->5->6->NULLstruct ListNode{ int val; ListNode *next; ListNode(int num):val(num),next(nullptr){}};ListNode* mergeLinkList(ListNo.

2021-06-18 16:53:06 58

原创 每天一道算法题_002_逆序输出链表

给定一个链表头指针,逆序输出该链表###法一:栈struct ListNode { int val; ListNode *next; ListNode(int num):val(num),next(nullptr){};};//最先想到的就是用栈来实现void printReverseLink(ListNode *head){ //指针做参数,一定要做判空检查 if(!head) return; std::stack<int> st; while(head).

2021-06-17 22:17:49 83

原创 每天一道算法题_001_链表逆序

链表逆序给定一个链表的头结点,返回逆序后的新节点###法一:循环struct ListNode{ int val; ListNode *next; ListNode(int num):val(num),next(NULL){}};ListNode *reverse(ListNode *head){ //判断头结点是否为空,或者是否只有一个节点 if(!head || !head->next) return head; ListNode *newHead = NULL

2021-06-16 23:14:34 65 1

空空如也

空空如也

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

TA关注的人

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