数据结构与算法
数据结构与算法
Cynantrs
这个作者很懒,什么都没留下…
展开
-
leetcode day3
思路直观来说我们只需维护两个链表 small 和 large 即可,small 链表按顺序存储所有小于 x 的节点,large 链表按顺序存储所有大于等于 x 的节点。遍历完原链表后,我们只要将 small 链表尾节点指向 large 链表的头节点即能完成对链表的分隔。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * };.原创 2022-03-22 01:26:30 · 142 阅读 · 0 评论 -
leetcode day2
49题思路采用哈希算法,在将字符串进行字母排序时,将其放入到对应的 bucket 中,如果排序后是一模一样,则会处于同一个 bucket 中,最后将 bucket 中的字符串成堆取出即可。时间复杂度为 O(n)。哈希,又名散列,英文名称 Hash。简单来说,哈希算法是在遍历数据的过程中,逐一给数据做标记,遍历完之后,如果想要寻找某个数据,只需根据标记即可快速找到。代码class Solution {public: vector<vector<string>> g原创 2022-03-16 23:45:15 · 193 阅读 · 0 评论 -
leetcode day1
解答如下:class Solution {public: int lengthOfLongestSubstring(string s) { int maxtrim = 0; int left = 0; int size = s.length(); unordered_set<char> win; if(size == 0) return 0; for(int i = 0; i < .原创 2022-03-13 22:06:38 · 805 阅读 · 0 评论 -
两个栈实现队列
题目请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size,原创 2021-10-13 17:35:16 · 155 阅读 · 0 评论 -
散列表(哈希表)
定义散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字 key 对应一个存储位置 f(key)。对应关系f称为散列函数,又称为哈希(Hash)函数。采用散列技术将记录存储在一块连续的存储空间中这块连续存储空间称为散列表或哈希表(Hash table),关键字对应的记录存储位置我们称为散列地址。散列技术的记录之间不存在什么逻辑关系,它只与关键字有关联。两个关键字 key1 != key2,但是却有 f(key1) = f(key2),这种现象我们称为冲突,并把 key1原创 2021-10-09 17:29:23 · 93 阅读 · 0 评论 -
初识线性表
线性表(List):零个或多个数据元素的有限序列。注意:首先它是一个序列。也就是说,元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个无后继,其它每个元素都有且仅有一个前驱和后继;然后,线性表强调是有限的;线性表中的数据都是相同类型的。...原创 2021-10-09 15:16:58 · 69 阅读 · 0 评论 -
实现链表翻转
双指针迭代我们可以申请两个指针,第一个指针叫 pre,最初是指向 null 的。第二个指针 cur 指向 head,然后不断遍历 cur。每次迭代到 cur,都将 cur 的 next 指向 pre,然后 pre 和 cur 前进一位。都迭代完了(cur 变成 null 了),pre 就是最后一个节点了。演示图如下:代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val;原创 2021-10-07 17:04:21 · 70 阅读 · 0 评论 -
树、二叉树
树树的定义:树是n(n>=0)个结点的优先集。n=0时称为空树。在任意一个非空树中,有且仅有一个特定的根的结点;当n>1时,其余结点可分为m个互不相交的有限集,其中每一个集合本身又是一棵树,并称为根的子树。注意:n>0时根节点是唯一的;m>0时,子树的个数没有限制,但它们一定是互不相交的。结点度:结点拥有的子树数度为0的结点称为叶结点(有时也称为叶子)或终端结点度不为0的结点称为非终端结点或分支结点树的度是树内各结点的度的最大值深度/高度:树中结点的最大层次,下图的原创 2021-10-06 23:32:35 · 153 阅读 · 0 评论