蓝桥
empty__barrel
这个作者很懒,什么都没留下…
展开
-
力扣:232.用栈实现队列
力扣:232.用栈实现队列代码随想录解析题目:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你 只能 使用标准的栈操作 —— 也就是只有 push to top,原创 2022-02-18 18:45:04 · 705 阅读 · 0 评论 -
力扣:链表中倒数第k个节点
class Solution {public: ListNode* getKthFromEnd(ListNode* head, int k) { ListNode* fastnode = head; ListNode* slownode = head; for(int i = 0; i < k-1; i++){ fastnode = fastnode->next; } while(f原创 2022-03-28 15:31:55 · 88 阅读 · 0 评论 -
力扣:链表的中间节点
class Solution {public: ListNode* middleNode(ListNode* head) { ListNode* fastnode = head; ListNode*slownode = head; while(fastnode->next && fastnode->next->next){ fastnode = fastnode->next->ne原创 2022-03-28 15:26:02 · 594 阅读 · 0 评论 -
力扣:回文链表
找到中间位置节点,一个指针走两步,一个指针走一步即可。将后面的链表反转。两个链表对比即可。class Solution {public: bool isPalindrome(ListNode* head) { if(!head) return true; ListNode* fastnode = head; ListNode* slownode = head; while( fastnode->next &&原创 2022-03-28 12:20:31 · 1119 阅读 · 0 评论 -
力扣:反转链表
力扣:反转链表题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。思路:运用三个指针,用两个指针作为逆置链接关系的前后节点,以及用一个指针提供下一个节点的位置。代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * Lis原创 2022-02-11 23:14:58 · 199 阅读 · 0 评论 -
力扣:面试题 02.07. 链表相交
力扣:面试题 02.07. 链表相交题目:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。思路:我们求出两个链表的长度,并求出两个链表长度的差值,然后让curA移动到,和curB 末尾对齐的位置。将两个链表从末尾出对齐,从对齐开始处,依次比较节点从而找出交点。看while循环只需要看头就可以(因为通过循环体可从开始推到结束)如: ListNode* curA = headA; int lenA = 0;原创 2022-02-12 15:09:25 · 189 阅读 · 0 评论 -
142.环形链表II
142.环形链表II代码随想录解析题目:给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。解析:当两者都进入圈内,相对而言slow不动原创 2022-02-14 11:47:33 · 513 阅读 · 0 评论 -
力扣:141环形链表
class Solution {public: bool hasCycle(ListNode *head) { ListNode* fastnode; ListNode* slownode; if(head){ fastnode = head; slownode = head; } else return false; while(fastnode->next != NU原创 2022-03-27 21:27:41 · 4722 阅读 · 0 评论 -
力扣:删除排序链表中的重复元素
class Solution {public: ListNode* deleteDuplicates(ListNode* head) { ListNode*node = head; while(node && node->next){ if(node->next->val == node->val){ node->next = node->next->n原创 2022-03-27 21:09:02 · 1029 阅读 · 0 评论 -
力扣:合并两个有序链表
class Solution {public: ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) { if(!list1) return list2; if(!list2) return list1; ListNode* cur = new ListNode(0); ListNode* node1 = list1; ListNode* node2 = l原创 2022-03-27 20:49:28 · 61 阅读 · 0 评论 -
力扣:找出所有数组中消失的数字
操作后的value对应的是数值。下标为数值-1。class Solution {public: vector<int> findDisappearedNumbers(vector<int>& nums) { int size = nums.size(); vector<int>v; for(int i = 0; i < size; i++){ int value = nums原创 2022-03-27 13:19:11 · 119 阅读 · 0 评论 -
力扣:283.移动零
力扣:283.移动零题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。空间想象:上面一个数组,下面一个数组。上面一个数组由 fastIndex 指向,下面一个数组由 slowIndex 指向。将上面一个数组搬到下面一个数组即可。按题意:假如上面一个数组指针指向的值为0则指向下一个数,不为0则交换 slowIndex 指向的数和 fastIndex 指向的数。通过swap就实现了后面的数为0原创 2022-02-10 13:50:01 · 299 阅读 · 0 评论 -
力扣:移动两个有序数组
class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int point1 = m-1; int point2 = n-1; for (int i = m+n-1; i >= 0; i--){ if(point1 < 0) nums1[i] = nu原创 2022-03-26 15:56:37 · 168 阅读 · 0 评论 -
力扣:爬楼梯
class Solution { private : map<int,int> m; public: int climbStairs(int n) { if (n == 1) return 1; if (n == 2) return 2; if (m.find(n) != m.end()) return m[n]; else { int result = climbStairs(原创 2022-03-26 15:05:25 · 209 阅读 · 0 评论