[剑指offer][JAVA]面试题第[18]题[删除链表的节点]
【问题描述】[中等]
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
【解答思路】
1. 双指针
时间复杂度:O(N^2) 空间复杂度:O(1)
class Solution {public ListNode deleteNode(ListNode head, int val) {if(head.val == val) return head.next;ListNode pre = head, cur = head.next;while(cur != null && cur.val != val) {pre = cur;cur = cur.next;}if(cur != null) pre.next = cur.next;return head;}
}
2.单指针
时间复杂度:O(N) 空间复杂度:O(1)
public ListNode deleteNode(ListNode head, int val) {if(head.val == val) return head.next;ListNode cur = head;while(cur != null){if(cur.next.val == val ){cur.next = cur.next.next;break;}cur=cur.next;}return head;}
【总结】
1.画图理解指针问题
2.遍历指针
ListNode cur = head;while(cur != null)cur=cur.next;}
3.链表为空作判断 链表头尾特殊判断
参考链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/solution/mian-shi-ti-18-shan-chu-lian-biao-de-jie-dian-sh-2/
[剑指offer][JAVA]面试题第[18]题[删除链表的节点]相关推荐
- [剑指offer][JAVA]面试题第[24]题[反转链表][递归][双指针][头插法]
[问题描述][中等] 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点.示例:输入: 1->2->3->4->5->NULL 输出: 5->4 ...
- [剑指offer][JAVA]面试题第[31]题[栈的压入、弹出序列][栈]
[问题描述][中等] 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4 ...
- [剑指offer][JAVA]面试题第[39]题[数组中出现次数超过一半的数字][HashMap][摩尔投票法]
[问题描述][简单] 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.你可以假设数组是非空的,并且给定的数组总是存在多数元素.示例 1:输入: [1, 2, 3, 2, 2, 2, 5, ...
- [剑指offer][JAVA]面试题第[32-3]题[从上到下打印二叉树 ][BFS]
[问题描述][中等] 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉树: [3 ...
- [剑指offer][JAVA]面试题第[32-2]题[从上到下打印二叉树][BFS]
[问题描述][简单] 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行.例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 ...
- [剑指offer][JAVA]面试题第[32-1]题[从上到下打印二叉树][BFS]
[问题描述][中等] 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回: ...
- [剑指offer][JAVA]面试题第[30]题[包含min函数的栈][双栈辅助栈][单栈]
[问题描述][中等] 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1).示例:MinStack min ...
- [剑指offer][JAVA]面试题第[16]题[数值的整数次方][位运算][二分法]
[问题描述][中等] 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题.示例 1:输入: ...
- [剑指offer][JAVA]面试题第[64]题[求1+2+…+n][逻辑运算符]
[问题描述][中等] 求 1+2+...+n ,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C).输入: n = 3 输出: 6 [解 ...
最新文章
- it 脑裂_脑裂是什么?Zookeeper是如何解决的?
- 殊途同归还是渐行渐远?MIT神经科学教授James DiCarlo谈如何通过人类神经理解神经网络...
- 【数据结构与算法】之深入解析“分割数组的最大值”的求解思路与算法示例
- 2684亿销售额背后的阿里AI技术
- 原来记录系统日志那么简单【Java】【SpringBoot】【Mybatis Plus】【AspcetJ】
- linux下ip协议(V4)的实现(二)
- 多重环境下web.config配置管理解决方案
- mysql cmmand not found
- linux动态库路径生效,Linux下如何解决动态库的链接问题
- CentOS7.6重装系统步骤
- 店盈通:新品牌如何活得更好、活得更久
- 五大主流浏览器和内核
- mac升级系统mysql无法启动解决
- 企业管理不可忽视“工作日志”
- Tableau权限设置
- EASYOPS系列|谨慎!勿让持续交付变成bug自动化发布
- 【状语从句练习题】状语从句 + 过去完成时
- 前端token知识:token如何存储?token过期如何处理?
- 《数字图像处理(第三版)》 第二章 数字图像基础 笔记3(图像取样和量化)
- 用HBuilder开发的基于MUI和H5+的APP开发及上架经历