
力扣刷题
小白-先森
一枚非常普通的计算机专业2020级大学生
展开
-
力扣19删除链表的倒数第N个结点
19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode) (leetcode-cn.com)/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */// 思路:// 利用双指针,先让快指针先走n步// 然后快指针和慢指针同时走,直到快指针指向了末尾结点// 此时慢指针指向就是要删除结点的前一个结点//原创 2022-04-06 09:42:30 · 499 阅读 · 0 评论 -
力扣24 俩俩交换链表中的结点
24. 两两交换链表中的节点 - 力扣(LeetCode) (leetcode-cn.com)/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* swapPairs(struct ListNode* head){ // 创建虚拟头结点 // 想要俩俩交换元素需要另一原创 2022-04-05 17:38:43 · 1263 阅读 · 0 评论 -
链表操作技巧--虚拟头结点
在链表删除当中,删除头结点和删除非头结点的操作是不一样的,链表的其他节点都是通过前一个节点来移除当前节点,而头结点没有前一个节点,所以需要单独写一段逻辑来处理移除头结点的情况。为了统一操作链表,不用单独为操作头结点额外书写逻辑,可以设置一个虚拟头结点。也就是给头结点前面再加一个结点。题目示例:203. 移除链表元素 - 力扣(LeetCode) (leetcode-cn.com)struct ListNode* removeElements(struct ListNode* head, int原创 2022-04-05 10:34:17 · 1860 阅读 · 1 评论 -
力扣206反转链表
206. 反转链表 - 力扣(LeetCode) (leetcode-cn.com)struct ListNode* reverseList(struct ListNode* head){ // 实际上是操作三个指针 // 形参head指针被当作指向当前需要反转结点的指针,然后让head的地址域指向前一个结点(pre)即可 // temp是存储当前要反转结点的下一个结点,为之后继续向下一个结点反转做准备 // pre指针初始值为null,指向被反转结点的前一个结点。原创 2022-04-05 10:08:39 · 348 阅读 · 0 评论 -
力扣232 用栈实现队列
题目连接:232. 用栈实现队列 - 力扣(LeetCode) (leetcode-cn.com)思路都在代码注释当中。该题中栈是用数组表示的 没有指针概念 为了方便理解所以把指向数组下标位置的标志称为了指针。typedef struct { // 用俩个栈模拟队列 栈用数组表示 int stackIn[100],stackOut[100]; // 栈是后进后出,只在栈尾进行操作,所以每个栈只需要一个指针(指向栈尾) int stackInTop,stackOu原创 2022-04-04 11:24:59 · 897 阅读 · 0 评论