热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

你今天学算法了吗?打卡第十天

目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、代码详解三、本题小知识一、题目1、题目描述给定一个已排序的链表的头head,

 



目录

 一、题目

1、题目描述

2、基础框架

3、原题链接

二、解题报告

1、思路分析

2、代码详解

三、本题小知识




 一、题目



1、题目描述


  

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。


示例 1:


输入:head = [1,1,2]
输出:[1,2]

示例 2:


输入:head = [1,1,2,3,3]
输出:[1,2,3]


2、基础框架

   Java 版本给出的基础框架代码如下:   

/*** 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 deleteDuplicates(ListNode head) {}
}


3、原题链接

    LeetCode  83. 删除排序链表中的重复元素


二、解题报告



1、思路分析

(1)递归


  • 若值相同则    head=deleteDuplicates(head.next);
  • 不同则向后移再  head.next=deleteDuplicates(head.next);

(2)指针遍历


  • 相同着后面节点迁移覆盖
  • 不相同则指针后移继续遍历

2、代码详解

/*** 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 deleteDuplicates(ListNode head) {// //递归// if(head==null){// return null;// }// if(head.next==null){// return head;// }// if(head.val==head.next.val){// head=deleteDuplicates(head.next);// }else{// head.next=deleteDuplicates(head.next);// }// return head;//指针遍历,删除相同结点ListNode res = head;if(head==null){return null;}while(res.next!=null){//res结点和他的后一个结点相同,则把res后一个的后有一个结点千移覆盖res的下一个结点if(res.val==res.next.val){res.next=res.next.next;//不相等则指针后移}else{res=res.next;}}return head;}
}

三、本题小知识

    三数之和,枚举;


推荐阅读
author-avatar
yvli心语
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有