反转链表

赖注入与控制反转

赖注入与控制反转 依赖注入(Dependency Injection:DI): 程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入。 通俗来讲,就是把有依赖关系的类放到容器中,然后在我们需要这些类时,容器自动解析出这些类的实例。 依赖注入最大的好处时实现类的 ......

NC66 两个链表的第一个公共结点

https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?tpId=117&rp=1&ru=%2Fexam%2Foj&qru=%2Fexam%2Foj&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26 ......
结点 两个 NC 66

快慢指针解决环形链表

可知首先要判断是否有环,然后给出目标的位置。 slow指针走一步,fast指针走两步。当这两个指针都进入环时,fast指针相当于slow指针只走了一步,因此肯定两者会相遇。 但这只是相遇点,不是环起始点,但根据计算可知,此时都以同样的单位速度时,再相遇时就可以得到相交点。 点击查看代码 class ......
快慢 环形 指针

链表反向实现

链表的实现很简单,但有一个注意事项,在插入链表时,如果定义了一个Node* head,那么Insert函数的形参应该为(Node**),否则无法对head进行修改,就算我把head定义为全局变量也是如此。如果head是一个局部变量的话那么很容易理解,但为何定义为全局变量也是如此呢?我没有在main函 ......

两两交换链表中的节点 24

学习到的有两点,leetcode好像不设置哨兵节点,需要的话要自己额外设置。 点击查看代码 ListNode*dummy=new ListNode(0); 还有的就是递归的使用,先把自己这一层任务干完,然后还要与下一个任务建立联系。 点击查看代码 class Solution { public: L ......
节点 24

新建链表 707

开始做的时候,错误吧List当作节点别名,而且开始当时没考虑给那个类增加size变量,导致判断链表中是否存在目标下标时,异常麻烦。 看了解答后,就把节点与list分开了,这时候又用到了,类初始化的问题。 点击查看代码 struct node{ int val; node*next; node(int ......
707

【算法】【线性表】【链表】删除排序链表中的重复元素 II

1 题目 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head = [1,2,3,3,4,4,5] 输出:[1,2,5] 示例 2: 输入:head = [1,1,1,2,3] 输出:[2,3] 提示: 链表 ......
线性 算法 元素 II

【算法】【线性表】【链表】删除排序链表中的重复元素

1 题目 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 输入:head = [1,1,2] 输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3] 输出:[1,2,3] 提示: 链表中节点数目在范围 [0, ......
线性 算法 元素

链表

前言 理解链表概念及实现原理。 1.链表定义 【1】概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 【2】组成:由一系列节点(Node)通过指针连接而成,从一个头节点(Head)开始,头节点作为链表的入口点,它包含了对第一个节点的引用。最 ......

头插法创建链表

定义一个结构体,包含当前的值域和指针域 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; struct node { node *next; int where; } *first[N],a[N]; int l,n; i ......

【算法】【线性表】【链表】分隔链表

1 题目 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1: 输入:head = [1,4,3,2,5,2], x = 3 输出:[1,2,2,4,3, ......
线性 算法

【算法】【线性表】【链表】反转链表II

1 题目 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入:head = [1,2,3,4,5], left = 2, right = 4 输出 ......
线性 算法

【算法】【线性表】【链表】反转链表

1 题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 示例 3: 输入:head = [] 输出:[] 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= No ......
线性 算法

链表中等题(下)

链表中等题(下) LCR 028. 扁平化多级双向链表 class Solution { public: // 递归 Node *generate(Node *head) { if (head == nullptr) return nullptr; // 把后面的扁平化 Node *next = g ......

刷题 链表 优先队列

2024.1.9 cf Hello 2024 1919D 解题思路 这题理解一下就是,找出数组中每一个比左数或右数大1的数,从大到小(体现优先队列)删除(体现链表),对访问过的数打个标记(vis),最后数组里的数要么被打过标记,要么是0. 代码 #include<bits/stdc++.h> usi ......
队列

D3 链表中的节点每k个一组翻转

https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e?tpId=117&rp=1&ru=%2Fexam%2Fcompany&qru=%2Fexam%2Fcompany&sourceUrl=%2Fexam%2Fcompan ......
节点 D3

【算法】【线性表】【链表】链表求和

1 题目 给定两个用链表表示的整数,每个节点包含一个数位。 这些数位是反向存放的,也就是个位排在链表首部。 编写函数对这两个整数求和,并用链表形式返回结果。 示例: 输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295 输出:2 -> 1 -> 9,即912 进阶: ......
线性 算法

带头节点双向链表实现

#include <stdio.h> #include <stdlib.h> #define Elemtype int #define ERROR -1 /* 带头节点的双向链表循环实现 */ typedef struct Node { Elemtype e; Node* next; Node* f ......
节点 双向

链表

#include <stdio.h> #include <stdlib.h> /* // 双向链表节点结构体 typedef struct ListNode { int val; // 节点值 struct ListNode* next; // 指向后继节点的指针 struct ListNode* ......

链表中等题(上)

链表中等题(上) 2807. 在链表中插入最大公约数 // 辗转相除 int gcd(int a, int b) { if (a % b == 0) return b; return gcd(b, a % b); } struct ListNode *insertGreatestCommonDivi ......

合并两个排序的链表

题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。 数据范围 链表长度 [0,500]。 样例 输入:1->3->5 , 2->4->5 输出:1->2->3->4->5->5 解法1: public ListNode merge(ListNode l1, List ......
两个

反转链表

题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 递归思想如下: Java代码如下: public class ListNode { int val; ListNode next=null; public ListNode(int x) { val=x; } } cla ......

链表-adlist

2. 链表 相关文件 adlist.h adlist.c 1. 定义 typedef struct listNode { struct listNode *prev; struct listNode *next; void *value; } listNode; typedef struct lis ......
adlist

链表的基本操作

以PTA的7-61为例 创建学生信息管理系统,具体要求如下: 学生信息包括:学号 姓名 数学成绩 英语成绩 计算机成绩 功能1:添加学生信息 执行1时,输入学号,姓名,三门科目成绩;如果添加学生成功则输出“Add success”,如果学生已存在则输出“Students already exist” ......
基本操作

leedcode 合并两个有序链表

class Solution(object): def mergeTwoLists(self, list1, list2): if not list1: return list2 if not list2: return list1 result = None while list1 or list ......
leedcode 两个

day08 代码随想录算法训练营 151. 反转字符串中的单词

words = s.split() 题目:151. 反转字符串中的单词 我的感悟: 虽然我自己写出来了,但是又不太确定 理解难点: words = s.split() 切记:这里split是去掉所有的空格。 words = s.split(" ") 如果这样写" "就仅仅去除" "一个空格,这样写不 ......
随想录 训练营 字符串 随想 算法

7、整数反转

输入321,需要输出123 public static int reverse(int x) { int res = 0; while (x != 0) { // 下一步要res*10,所以这一步要保证res*10不大于 Integer.MAX_VALUE if (Math.abs(res) > I ......
整数

反转数组

反转数组 public static void main(String[] args) { int[] arrays = {1,2,3,4,5}; int[] reverse = reverse(arrays); printArray(reverse); } //反转数组 public static ......
数组

day08 代码随想录算法训练营 541. 反转字符串 II

题目:541. 反转字符串 II 我的感悟: 你别看这题简单,python里面细节很多 理解难点: 字符串转化为列表来算 s[1:99] 只会取到s[1:s.size] 这个range(0,size,k) 是可以取到步长的 或者用另外的思路。 代码难点: 总结概括: 注意[1:999]这里的容错机制 ......
随想录 训练营 字符串 随想 算法

109. 有序链表转换二叉搜索树

和题目108类似:108是数组 https://www.cnblogs.com/MarkLeeBYR/p/16906818.html public TreeNode sortedListToBST(ListNode head) { if (head == null) { return null; } ......
109
共1070篇  :1/36页 首页上一页1下一页尾页