![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
李骁睿写技术的地方
此人不懒,但也什么都没写。
展开
-
STL中容器vector迭代器失效的相关问题
迭代器失效,有两个层面的意思:无法通过迭代器++,–操作遍历整个stl容器。记作: 第一层失效。无法通过迭代器存取迭代器所指向的内存。 记作: 第二层失效。vector是个连续内存存储的容器,如果vector容器的中间某个元素被删除或从中间插入一个元素, 有可能导致内存空间不够用而重新分配一块大的内存。 这个动作将导致先前获取的迭代器,,第一层和第二层均失效。 造成失效的两个函数:...转载 2019-04-29 09:48:00 · 218 阅读 · 0 评论 -
STL——1、各类容器迭代器失效总结
一. 种类:标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope:slist是一个单向链表,rope本质上是一个重型字符串。非标准关联容器:hash_set、hash_multiset、hash_map和hash_multimap。几种标准非STL容器:包括数组、...原创 2019-04-29 15:06:59 · 265 阅读 · 0 评论 -
数据结构——平衡搜索树的左单旋&右单旋&双旋
引入:在平衡搜索树中进行插入结点时,有可能会破坏整棵树的平衡。为了保证平衡不被破坏,就要对一些节点进行旋转,从而来降低树的高度,这样也能保证树的平衡。一、左单旋:注:上图中的▲结点(叶子节点)有可能是NULL,也有可能不为空。从图中可以看出,进行左单旋时:只是改变了parent的右指针以及subR的左指针指向。将subR的左子树(subRL)作为parent的右子树,并让parent...原创 2019-05-05 17:19:07 · 553 阅读 · 0 评论 -
LeetCode——1、链表
〇、目录一、反转链表1、简单版:反转全部节点class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* newhead=NULL; while(head) { ListNode* nex=head->next; ...原创 2019-05-20 21:15:45 · 125 阅读 · 0 评论 -
STL——2、sort 函数实现详解
在腾讯WXG实习二面时被问到过,当时回答内部是快排、插入排序完成的,但是没厘清具体关系及细节。特此归纳。一、函数源码#include <algorithm> template< class RandomIt >void sort( RandomIt first, RandomIt last ); template< class RandomIt, c...原创 2019-05-11 22:21:38 · 485 阅读 · 0 评论 -
STL——3、面试相关知识梳理
一、STL简介STL提供六大组件,彼此可以组合套用:容器(container)容器就是各种数据结构,上图是容器知识框架,从实现角度看,STL容器是一种class template(模板类)。算法(algorithm)各种常见算法,如sort,search,copy,erase等,我觉得其中比较值得学习的就是sort,next_permutation,partition,merge s...原创 2019-05-12 11:14:18 · 176 阅读 · 0 评论 -
LeetCode——2、动态规划DP
〇、引入《算法导论》第三版解释如下:动态规划(dynamic programming)与分治法相似,都是通过组合子问题的解来求原问题(在这里,"programming"指的是一种表格法,并非编写的计算机程序)。……分治法将问题划分为互不相干的子问题,递归地求解子问题,再将他们的解组合起来,求出原问题的解。与之相反的,动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题(子问题的求...原创 2019-06-04 20:58:49 · 239 阅读 · 0 评论