每天一道leetcode203-移除链表的元素
考试结束,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默想起来一个声音:”乔戈里峰”
前言
2018.11.7号打卡
明天的题目leetcode141-环形链表:
https://leetcode-cn.com/problems/linked-list-cycle/
题目
leetcode203-移除链表的元素
中文链表:
https://leetcode-cn.com/problems/remove-linked-list-elements/description/
英文链接:
https://leetcode.com/problems/remove-linked-list-elements/description/
分类:链表:
题目详述
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
题目详解
思路
- 首先是删除开头的节点与val值相等的节点;
- 然后是删除中间的与val相等的节点,采取之前的这道题的解法,就是交换当前节点与下一个节点的val值,然后把下一个节点删除就行;
- 最后处理最后的一个节点。
代码
1/**
2 * Definition for singly-linked list.
3 * public class ListNode {
4 * int val;
5 * ListNode next;
6 * ListNode(int x) { val = x; }
7 * }
8 */
9class Solution {
10 public ListNode removeElements(ListNode head, int val) {
11 if(head == null)
12 return head;
13 while(head != null && head.val == val)
14 head = head.next;
15 if(head == null)
16 return head;
17 ListNode temp = head.next;
18 ListNode pre = head;
19 while(temp != null)
20 {
21 if(temp.next == null)
22 {
23 if(temp.val != val)
24 break;
25 pre.next = null;
26 break;
27 }
28 if(temp != null && temp.val == val)
29 {
30 int value = temp.next.val;
31 temp.val = value;
32 temp.next = temp.next.next;
33 }else
34 {
35 pre = temp;
36 temp = temp.next;
37 }
38
39 }
40 return head;
41 }
42}
代码讲解
- 13-14行去判断开头的节点,如果头结点与val值相等,那么该删除,直到头结点值不相等
- 17-18行是保留一个pre的前置节点,以便删除最后一个节点(如果与val相等)
- 21-27行是处理最后一个节点,如果最后一个节点是val,那么删除最后一个节点,pre的下一个就是最后一个节点;
- 28-32行如果中间的当前节点与val值相等,那么通过交换当前节点的值与下一个节点的值以后,删除一个节点的;
- 35-36行如果与val不相等,那么直接继续往前移动。
结束语
2018.11。7打卡
作者乔戈里亲历2019秋招,哈工大计算机本硕,百度准入职java工程师,欢迎大家关注我的微信公众号:程序员乔戈里,公众号有3T编程资源,以及我和我朋友(准入职百度C++工程师)在秋招期间整理的近200M的面试必考的java与C++面经,并有每天一道leetcode打卡群与技术交流群,欢迎关注。
每天一道leetcode203-移除链表的元素的更多相关文章
- [Swift]LeetCode203. 移除链表元素 | Remove Linked List Elements
Remove all elements from a linked list of integers that have value val. Example: Input: 1->2-> ...
- leetcode203. 移除链表元素
方法一(删除头结点时另做考虑) class Solution { public: ListNode* removeElements(ListNode* head, int val) { if(head ...
- [LeetCode] Remove Linked List Elements 移除链表元素
Remove all elements from a linked list of integers that have value val. Example Given: 1 --> 2 -- ...
- Leecode刷题之旅-C语言/python-203移除链表元素
/* * @lc app=leetcode.cn id=203 lang=c * * [203] 移除链表元素 * * https://leetcode-cn.com/problems/remove- ...
- 力扣(LeetCode)移除链表元素 个人题解
删除链表中等于给定值 val 的所有节点. 这题粗看并不困难,链表的特性让移除元素特别轻松,只用遇到和val相同的就跳过,将指针指向下一个,以此类推. 但是,一个比较麻烦的问题是,当链表所有元素都和v ...
- Java实现 LeetCode 203 移除链表元素
203. 移除链表元素 删除链表中等于给定值 val 的所有节点. 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2 ...
- [LeetCode] 203. 移除链表元素(链表基本操作-删除)、876. 链表的中间结点(链表基本操作-找中间结点)
题目 203. 移除链表元素 删除链表中等于给定值 val 的所有节点. 题解 删除结点:要注意虚拟头节点. 代码 class Solution { public ListNode removeEle ...
- 【LeetCode】203.移除链表元素
203.移除链表元素 知识点:链表:双指针 题目描述 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 . 示例 ...
- [google面试CTCI] 2-1.移除链表中重复元素
[链表] Q:Write code to remove duplicates from an unsorted linked list FOLLOW UP How would yo ...
随机推荐
- VC6.0快捷键一览表
F1 显示帮助,如果光标停在代码的某个字符上,显示MSDN中相应的帮助内容 F2 书签功能: Ctrl+F2 –在某行设置一个书签(再按一次次是取消) F2 –跳到下一个书签位置 Shift+F2 – ...
- cesium编程中级开篇
cesium编程中级开篇 其实初级,中级并无定论,我理解的初级是根据官方教程,先学会如何部署环境,搭建hello world,使用官方提供的工具,完成一些示例, 而中级就是在这些的基础上,自己定制一些 ...
- kubectl get componentstatus ERROR:HTTP probe failed with statuscode: 503
通过kubectl命令可以查看k8s各组件的状态: [root@wecloud-test-k8s-1 ~]# kubectl get cs NAME STATUS MESSAGE ERROR cont ...
- Remoteland HDU - 4196
题意: 给出一个n,在[1, n] 中挑选几个不同的数相乘,求能的到的最大完全平方数 解析: 最大的肯定是n!, 然后n!不一定是完全平方数 (我们知道一个完全平方数,质因子分解后,所有质因子的质数均 ...
- robot framework学习笔记之十-模板
测试模板可以让关键字驱动测试用例转换为数据驱动测试用例.鉴于普通测试用例是由关键字和可能的参 数组成,使用了模板的测试用例只需要定义模板关键字的参数即可
- Linux磁盘及文件系统(一)
一.磁盘 1.IO接口类型 (1)传输类型分类 并口:同一个线缆可以接多块设备 IDE口:两个,一个主设备,一个从设备 SCSI:宽带:16-1:窄带:8-1 串口:同一个线缆只可以接一个设备 (2) ...
- CentOS7基础建站指南(笔记)
由于前段时间腾讯云打折,所以买了一台小服务器,想着以后写几个小网站,博客什么的,但是一开始就遇到了难题,大概就是Linux服务器的配置问题,比如如何假设服务器,配置非root用户,配置服务器数据的非r ...
- 确定 RN 中方法的 queue
 如果不指定,每一个模块,都会生成自己的一个串行队列. 可以通过强行声明一个队列来指定所有方法都在这个队列执行 - (dispatch_queue_t)methodQueue { return di ...
- JavaScript创建对象的4种方法
我们有很多种方式去构造一个对象.可以构造一个对象字面量,也可以和new前缀连用去调用一个构造器函数,或者可以使用Object.create方法去构造一个已经存在的对象的新实例,还可以调用任意一个会返回 ...
- HDU-1087-Super Jumping! Jumping! Jumping!(线性DP, 最大上升子列和)
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...