数据结构刷题集
小星code
c++/python/go后端学习ing
展开
-
力扣刷题笔记丨算法数据结构--查找算法--剑指 Offer 53 - II. 0~n-1 中缺失的数字
1 题目分析一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。题目链接:https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/58iqo5/思路:1、暴力解法2、二分查找法 都很简单2 代码实现** 思路一**class Solution {public: int missingNumber(原创 2022-02-24 18:25:23 · 463 阅读 · 0 评论 -
力扣刷题笔记丨算法数据结构--查找算法--剑指 Offer 53 - I. 在排序数组中查找数字 I
1 题目分析统计一个数字在排序数组中出现的次数。思路一:只需要遍历一遍即可,非常简单;思路二:考虑到nums是非递减数组,可采用二分查找法2 代码实现思路一:class Solution {public: int search(vector<int>& nums, int target) { int count = 0; for (int num:nums){ if (num == ta.原创 2022-02-24 09:39:41 · 388 阅读 · 0 评论 -
力扣刷题笔记丨算法数据结构--查找算法--剑指 Offer 03. 数组中重复的数字
1 题目分析在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。思路:由于只要求输出一个数字,因此只需要用哈希表做一个判断,若已存在则结束循环,输出当前数值,很简单。2 代码实现运用哈希表内嵌函数find()class Solution {public: int findRepeatNumber(vector<int>&am原创 2022-02-18 12:20:38 · 490 阅读 · 0 评论 -
力扣刷题笔记丨算法数据结构--字符串--剑指 Offer 58 - II. 左旋转字符串
1 题目分析题目链接:图解算法数据结构 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台 (leetcode-cn.com)字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。思路分析:这个题目也很简单,构造一个新的字符串,先把数字n之后的复制,再复制之前的2 代码实现class Solution{pu原创 2022-02-17 11:34:46 · 224 阅读 · 0 评论 -
力扣刷题笔记丨算法数据结构--字符串--剑指offer05替换空格
1 题目分析请实现一个函数,把字符串s中的每个空格替换成"%20"。非常简单的题目,一个if判定即可解决2 代码实现class Solution{ public: string replaceSpace(string s) { string res; int j = 0; for(int i = 0; i < s.size(); ++i) { if(s[i] ...原创 2022-02-17 10:02:20 · 111 阅读 · 0 评论 -
力扣刷题笔记丨算法数据结构--链表--复制带随机指针的链表
1 题目分析链接:138. 复制带随机指针的链表 - 力扣(LeetCode) (leetcode-cn.com)给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的深拷贝。深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不..原创 2022-02-16 20:36:45 · 196 阅读 · 0 评论 -
力扣刷题笔记丨算法数据结构--链表--反转链表
1 题目分析定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。2 代码实现思路:递归法,在回溯时修改链表指向class Solution {public: ListNode* reverseList(ListNode* head) { return Recur(head, NULL); } ListNode* Recur(ListNode* cur, ListNode* pre) { if (cur原创 2022-02-14 11:39:12 · 266 阅读 · 0 评论 -
力扣刷题笔记丨算法数据结构--链表--从尾到头打印链表
1 题目分析输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。链表结构/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */...原创 2022-02-14 10:35:37 · 364 阅读 · 0 评论 -
力扣刷题笔记丨算法数据结构--栈与队列--包含min函数的栈
1 题目分析定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。思路定义两个栈,一个用来存储数据,另一个用来维护最小值。在存入数据时,比较新数据是否为栈目前的最小值,若是则存入另一个栈。弹出数据时,比较数据是否为栈目前的最小值,若是则也从另一个栈弹出。另一个栈的栈顶始终为最小值。2 代码实现定义Minstack类与数据成员stk,stk_minclass MinStack { .原创 2022-02-11 22:25:07 · 244 阅读 · 0 评论 -
力扣刷题笔记丨算法数据结构--栈与队列--用两个栈实现队列
1. 栈与队列基础知识1.1 栈(stack)栈是受限制的序列,只能在栈顶插入和删除。栈的定义stack<int> stk栈的接口// 元素入栈stk.push(1)// 元素出栈stk.pop()// 查顶stk.top()栈的特点:后进先出1.2 队列队列也是受限制的序列,只能在队尾插入,队头删除队列的定义queue <int> que队列的接口// 元素入队queue.push(1)// 元素出.原创 2022-02-11 21:04:51 · 176 阅读 · 0 评论