摘要:
很经典的一道题,但波波老师讲出了新的东西。设立虚拟结点,因为每次循环cur->next只有头结点无法考虑,但是你要是单独考虑头结点,万一头结点删除你还需要再考虑下一头结点,就形成了很麻烦的while结构。有了虚拟头结点,问题全都解决了。 阅读全文
阅读排行榜
CCF学生排队
2020-03-07 12:09 by legend聪, 143 阅读, 收藏,
摘要:
这题如果考虑考虑用数组折腾会非常麻烦,如果想到用vector的insert函数和erase函数就会非常舒服的模拟出来。vt.erase(it)之后it就变成了野指针,所以要用it=erase(it),这样it就会自动指向下一个元素。 #include<cstdio> #include<iostrea 阅读全文
经典的堆排序
2020-04-10 00:40 by legend聪, 124 阅读, 收藏,
摘要:
#include<cstdio> #include<iostream> #include<vector> #include<algorithm> using namespace std; void heapAdjust(vector<int>&H, int st, int end) { int tm 阅读全文
leetcode138. 复制带随机指针的链表
2020-03-17 18:14 by legend聪, 104 阅读, 收藏,
摘要:
题目的意思比较难理解,分为3步。第一步建立二重链表,第二步random指针的建立,第三步拆分二重链表。 /* // Definition for a Node. class Node { public: int val; Node* next; Node* random; Node(int _val 阅读全文
leetcode54 螺旋矩阵
2020-03-13 01:48 by legend聪, 99 阅读, 收藏,
摘要:
题目的思路是每次确定左上顶点和右下顶点,然后进行一个框的打印,注意边界条件。然后设计一个打单行和单列的算法。一个小错误如果vector为空的话调用.size()方法会引发空指针异常,所以先判空再进行下面的操作。 class Solution { public: vector<int> spiralO 阅读全文