分类: 代码随想录算法训练营

52 篇文章

day15 | 二叉树
226. 翻转二叉树 左子树给右子树,右子树给左子树 class Solution { public: TreeNode* invertTree(TreeNode* root) { if (root == nullptr || (root->left == nullptr && root->right == nullpt…
day13 | 栈与队列part03
239. 滑动窗口最大值 加入时把小于val的全删除,删除时最多只删一个 class Solution { private: class MyQueue { public: void push(int value) { while (que.size() && que.back() < value) { que.pop_bac…
day10 | 栈与队列part01
232. 用栈实现队列 两个栈,一个in,一个out。out为空时就把in全部加进来 // 两个栈 一个用来出 class MyQueue { public: stack<int> sta1; stack<int> sta2; MyQueue() { } void push(int x) { sta1.push(x); } …
day9 | 字符串part2
OMG 巨难 28. 找出字符串中第一个匹配项的下标 kmp,,很折磨 class Solution { public: void getNext(int *next, const string &s) { int j = -1; next[0] = j; for (int i = 1; i < s.size(); i ++) { w…
day8 | 字符串
541. 反转字符串 II 写了一个通用的翻转函数 然后用到了指针做下标的思想 其实写复杂了,reverse可以直接调库,然后可以用一个for循环做起点,终点加个长度就ok了 class Solution { public: // 将s的[L, R]范围内翻转 void reverseS(string& s, int L, int R) {…
day6 | 哈希表part1
写两个水题放松下心情了属于是 1. 两数之和 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> umap; for (int i = 0; i < …
day4 | 链表part02
24. 两两交换链表中的节点 一时间没写出来,只需要管一个指针就够了,后面的两个指针每次循环定义下就ok了 class Solution { public: // 只需要管一个指针就够了 后面的两个指针每次循环定义下就ok了 ListNode* swapPairs(ListNode* head) { ListNode* dummy = new Li…
day3 链表
移除链表元素 可能出现两个val一样的在一起,所以使用while循环 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode…