当前位置:网站首页>leetcode-02(链表题)
leetcode-02(链表题)
2022-07-06 19:34:00 【Fairy要carry】
迭代法:
思路:划分一个局部位置,然后用一个辅助节点和辅助指针,比较大小然后辅助指针去连即可,每连一次位置往后推;
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
//辅助迭代法
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode help=new ListNode(-1);
ListNode pre=help;//辅助指针
//遍历
while (l1 != null && l2 != null){
if(l1.val<=l2.val){
//进行连接
pre.next=l1;
pre=pre.next;
l1=l1.next;
}else{
pre.next=l2;
pre=pre.next;
l2=l2.next;
}
}
//对剩下节点直接连
if(l1!=null){
pre.next=l1;
}
if(l2!=null){
pre.next=l2;
}
return help.next;
}
}
递归解法
class Solution {
//递归
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
//1.结束条件
if(l1==null){
return l2;
}
if(l2==null){
return l1;
}
//2.递归思路
if(l1.val<=l2.val){
l1.next=mergeTwoLists(l1.next,l2);
return l1;
}else{
l2.next=mergeTwoLists(l1,l2.next);
return l2;
}
}
}
递归解法,与上提类似
class Solution {
//递归
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
//1.结束条件
if(list1==null){
return list2;
}
if(list2==null){
return list1;
}
//2.递归思路
if(list1.val<=list2.val){
list1.next=mergeTwoLists(list1.next,list2);
return list1;
}else{
list2.next=mergeTwoLists(list1,list2.next);
return list2;
}
}
}
迭代法
注意指针的利用指向head,然后指向前一个结点,慢慢往后推
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode pre=null;
ListNode cur=head;
//每次循环进行两两交换
while(cur!=null){
ListNode next=cur.next;
cur.next=pre;
pre=cur;
cur=next;
}
return pre;
}
快慢指针:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode middleNode(ListNode head) {
int n = 0;
ListNode cur = head;
while (cur != null) {
++n;
cur = cur.next;
}
int k = 0;
cur = head;
while (k < n / 2) {
++k;
cur = cur.next;
}
return cur;
}
}
边栏推荐
- Change your posture to do operation and maintenance! GOPs 2022 Shenzhen station highlights first!
- Es6中Promise的使用
- Oracle connection pool is not used for a long time, and the connection fails
- 惯导标定国内外研究现状小结(删减版)
- Remember the problem analysis of oom caused by a Jap query
- What are the characteristics of the operation and maintenance management system
- Introduction to ins/gps integrated navigation type
- Django database (SQLite) basic introductory tutorial
- fasterxml ToStringSerializerBase报错
- [2022 national tournament simulation] polygon - computational geometry, binary answer, multiplication
猜你喜欢
Django database (SQLite) basic introductory tutorial
Niuke programming problem -- double pointer of 101 must be brushed
Detailed explanation of 19 dimensional integrated navigation module sinsgps in psins (time synchronization part)
巴比特 | 元宇宙每日必读:IP授权是NFT的破圈之路吗?它的难点在哪里?Holder该如何选择合作平台?...
What are the characteristics of the operation and maintenance management system
基于ensp防火墙双击热备二层网络规划与设计
Redis入门完整教程:客户端案例分析
Analysis of USB network card sending and receiving data
服装企业部署MES管理系统的五个原因
Huitong programming introductory course - 2A breakthrough
随机推荐
MySQL提升大量数据查询效率的优化神器
MATLB|具有储能的经济调度及机会约束和鲁棒优化
Common fitting models and application methods of PCL
Examples of how to use dates in Oracle
uniapp适配问题
Redis入门完整教程:AOF持久化
How-PIL-to-Tensor
2022年信息安全工程师考试大纲
Static proxy of proxy mode
用全连接+softmax对图片的feature进行分类
Cglib agent in agent mode
[2022 national tournament simulation] polygon - computational geometry, binary answer, multiplication
Qt蓝牙:QBluetoothDeviceInfo
商城商品的知识图谱构建
Redis入门完整教程:问题定位与优化
PSINS中19维组合导航模块sinsgps详解(初始赋值部分)
6-6 vulnerability exploitation SSH security defense
PSINS中19维组合导航模块sinsgps详解(滤波部分)
How to verify accesstoken in oauth2 protocol
知识图谱构建全流程