leetcode 反转链表&移除链表元素
时间:2021-09-08
本文章向大家介绍leetcode 反转链表&移除链表元素,主要包括leetcode 反转链表&移除链表元素使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
leetcode 反转链表&移除链表元素
反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/linked-list/f58sg/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
迭代法
思路:用指针指向头节点,然后往后遍历,先将头节点后的节点放到头节点前,成为新的头节点,在将指针后的一个节点放到头,如此遍历到原来的头节点变成尾节点,head.next=null
/**
* 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) {
if(head==null){
return null;
}
ListNode ret = head;
while(head.next!=null){
ListNode temp = head.next;
head.next=head.next.next;
temp.next=ret;
ret=temp;
}
return ret;
}
}
移除链表元素
递归
/**
* 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 removeElements(ListNode head, int val) {
if(head==null){
return null;
}
else if(head.val==val){
return removeElements(head.next,val);
}
else{
head.next=removeElements(head.next,val);
}
return head;
}
//这是官方题截
public ListNode removeElements(ListNode head, int val) {
if (head == null) {
return head;
}
head.next = removeElements(head.next, val);
return head.val == val ? head.next : head;
}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/remove-linked-list-elements/solution/yi-chu-lian-biao-yuan-su-by-leetcode-sol-654m/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
}
迭代
思路:给链表加上哨兵节点(哨兵节点真的好用),然后遍历链表,如果当前节点的下一个的值符合题目,跳过该节点,否则不跳过
public ListNode removeElements(ListNode head, int val) {
ListNode ret = new ListNode(-1,head);
ListNode temp = ret;
while(temp.next!=null){
if(temp.next.val==val){
temp.next=temp.next.next;
}
else{
temp=temp.next;
}
}
return ret.next;
}
原文地址:https://www.cnblogs.com/yumingkuan/p/15244160.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux下Mysql定时任务备份数据的实现办法
- PHP抽象类和接口用法实例详解
- php+lottery.js实现九宫格抽奖功能
- PHP实现一个按钮点击上传多个图片操作示例
- php实现 master-worker 守护多进程模式的实例代码
- Ubuntu 18.04 Server 设置静态IP 的办法
- PHP依赖注入容器知识点浅析
- centos克隆linux虚拟机的完整步骤分享
- laravel框架中间件简单使用方法示例
- PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
- Smarty模板语法详解
- PHP保留两位小数的几种方法
- PHP七种数据类型知识点总结
- PHP中__set()实例用法和基础讲解
- laravel框架分组控制器和分组路由实现方法示例