![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
抢我糖还想跑
这个作者很懒,什么都没留下…
展开
-
合并两个有序的数组
//双指针法,从A、B数组的末尾开始遍历,将较大者保存到另一个指针指向的新A数组的末尾: class Solution { public: void merge(int A[], int m, int B[], int n) { int *p = &A[m - 1], *q = &B[n - 1], *r = &A[m + n - 1]; //注意数组指针的定义和赋值!! while (m + n > 0) ..原创 2021-08-17 21:15:27 · 79 阅读 · 0 评论 -
合并有序链表
输入: { 2 }, { 1 } 返回值: { 1,2 } class Solution { public: /** * * @param l1 ListNode类 * @param l2 ListNode类 * @return ListNode类 */ ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { // write code here L..原创 2021-08-17 21:14:45 · 78 阅读 · 1 评论 -
青蛙跳台阶(斐波那契数列)
class Solution { public: int jumpFloor(int number) { if (number <= 0) { return 0; } if (number == 1) { return 1; } if (number == 2) { return 2; } int first = 1, second = 2, th...原创 2021-08-17 21:13:31 · 75 阅读 · 0 评论 -
两数之和
输入:[3, 2, 4], 6 返回值:[2, 3] class Solution { public: /** * * @param numbers int整型vector * @param target int整型 * @return int整型vector */ vector<int> twoSum(vector<int>& numbers, int target) { m..原创 2021-08-17 20:46:28 · 75 阅读 · 0 评论 -
数组输出最小的k个数
//==========================================数组输出最小的k个数====================== class Solution { public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { vector<int>a; //定义 vector a,存放前K个数 for (int i =原创 2021-08-17 20:45:40 · 79 阅读 · 0 评论 -
LRU缓存
class Solution { public: /** * lru design * @param operators int整型vector<vector<>> the ops * @param k int整型 the k * @return int整型vector */ vector<int> LRU(vector<vector<int> >& operators, int ..原创 2021-08-17 20:45:10 · 91 阅读 · 0 评论 -
排序 (快速排序、堆排序、冒泡排序、选择排序、直接插入、希尔排序)
//=========================================快速排序========================================== class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 将给定数组排序 * @param arr int整型vector 待排序的数组 * @return int整型vector */ v原创 2021-08-17 20:44:04 · 192 阅读 · 0 评论 -
大数加法
输入: "1", "99" 返回值: "100" class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ string solve(..原创 2021-08-15 09:15:07 · 105 阅读 · 0 评论 -
删除链表的倒数第n个节点
采用两个指针,对前指针,使其先走出N步,随后两个指针同时前进,当前指针到达链表尾部时,后指针到达倒数第N个节点的位置。 注意:删除时注意待删除节点为头结点时的情况。 /** * struct ListNode { * int val; * struct ListNode *next; * }; */ class Solution { public: /** * * @param head ListNode类 * @para...原创 2021-08-15 09:14:36 · 77 阅读 · 0 评论 -
链表中环的入口结点
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/ 这道题基础是判断是否有环,但是略有差异。 1、首先判断fast或者fast—>next是否为空,为空就返回nullprl,这没啥好说的 2、正常判断链表是否有环。区别在于,如果fast==slow,此时不直接返回fast!!!而是break出去,外面还需要进一步处理才re..原创 2021-08-15 09:14:01 · 79 阅读 · 0 评论 -
判断链表是否有环
老生常谈:快慢指针。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: bool hasCycle(ListNode *..原创 2021-08-15 09:12:55 · 59 阅读 · 0 评论 -
子数组最大累加问题
输入: [1, -2, 3, 5, -2, 6, -1] 返回值: 12 class Solution { public: /** * max sum of the subarray * @param arr int整型vector the array * @return int整型 */ int maxsumofSubarray(vector<int>& arr) { // write co..原创 2021-08-15 09:12:09 · 72 阅读 · 0 评论 -
寻找 两个链表的第一个公共结点
思路:两个链表接续起来,遍历 输入: { 1,2,3 }, { 4,5 }, { 6,7 } 返回值: { 6,7 } class Solution { public: ListNode* FindFirstCommonNode(ListNode* pHead1, ListNode* pHead2) { ListNode *a = pHead1, *b = pHead2; while (a != b) { a = a ? a->n原创 2021-08-14 08:41:05 · 85 阅读 · 0 评论 -
反转链表
class Solution { public: ListNode* ReverseList(ListNode* pHead) { ListNode* h = NULL; for (ListNode* p = pHead; p; ) { //重点学习这个for循环! ListNode* tmp = p->next; // 四 项 交换 p->next = h; h = p; p = tmp; } return..原创 2021-08-14 08:36:56 · 83 阅读 · 0 评论 -
最长无重复数组
输入: [2, 3, 4, 5] 返回值: 4 int maxLength(vector<int>& arr) { // write code here int n = arr.size(); int l = 0, r = 0; //滑动窗口的 左边界 和 右边界 set<int>s; //set 是一种排好序的数组,存进去的元素可以自动排序,且每个元素出现有且仅有一次. int res..原创 2021-08-14 08:35:29 · 132 阅读 · 0 评论 -
杨辉三角 数组
学会构造vector数组 一维: vector<int>a(10) 二维: vector<vector<int>>a(10) //a【10】【10】 vector<vector<int>>a(numRows); //二维 vector数组。一个括号“()”就行 for (int i = 0; i < numRows; i++) //i从0开始,j从1开始 { a[i].resize(i + 1, 1);..原创 2021-08-14 08:32:20 · 154 阅读 · 0 评论 -
回文 stack
思路:先全部入栈。然后依次出栈,和原始对比,是否相同 bool isPalindrome(ListNode* head) { stack<int>st; ListNode* cur = head; while (cur) { st.push(cur->val); cur = cur->next; } while (head) { if (head->val != st.top()) { return false;原创 2021-08-14 08:19:50 · 87 阅读 · 0 评论 -
二叉树遍历(前序、中序、后序)stack
//====================先序遍历=======================class Solution { public: vector<int> res; stack<TreeNode*> st; while (root) { res.push_back(root->val); st.push(root); root = root->left; } while (!st.empty()) { aut原创 2021-08-13 23:04:46 · 120 阅读 · 0 评论 -
N叉树遍历(层次)递归法
class Solution { public: /** * * @param root TreeNode类 * @return int整型vector<vector<>> */ vector<vector<int> > levelOrder(TreeNode* root) { // write code here vector<vector<int>> a; cengorder(ro原创 2021-08-13 23:00:32 · 165 阅读 · 0 评论 -
二叉树遍历(层次)递归法
输入: { 1,2 } 返回值:[[1], [2]] class Solution { public: /** * * @param root TreeNode类 * @return int整型vector<vector<>> */ vector<vector<int> > levelOrder(TreeNode* root) { // write code here vector<vector&l.原创 2021-08-13 22:59:43 · 117 阅读 · 0 评论 -
括号匹配 stack
class Solution { public: /** * * @param s string字符串 * @return bool布尔型 */ bool isValid(string s) { // write code here stack<char>k; // if(s[0]==']'||s[0]=='}'||s[0]==')') // { //原创 2021-08-13 22:52:17 · 75 阅读 · 0 评论 -
二叉树遍历(前序、中序、后序)递归法
递归超简单class Solution { public: vector<int> inorderTraversal(TreeNode* root) { vector<int>a; firstorder(root, a); return a; //必须有返回值 } void firstorder(TreeNode* root, vector<int>&a) //这儿要有 &! { if (!root) r原创 2021-08-13 22:46:35 · 99 阅读 · 0 评论 -
Redis+rehash
原创 2021-08-10 14:33:44 · 95 阅读 · 0 评论 -
绪论
原创 2021-08-10 14:32:19 · 79 阅读 · 0 评论 -
线性表
原创 2021-08-10 14:31:22 · 69 阅读 · 0 评论 -
二叉排序树-平衡二叉树-B树-B+树
这里是引用https://blog.csdn.net/weixin_52492280/article/details/114262606原创 2021-07-30 12:06:58 · 114 阅读 · 0 评论