热门标签 | 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;}
}

三、本题小知识

    三数之和,枚举;


推荐阅读
  • Mergeksortedlinkedlistsandreturnitasonesortedlist.Analyzeanddescribeitscomplexity.合并k个排序链表 ... [详细]
  • 本文目录一览:1、北大青鸟java培训:Java集合框架的知识总结? ... [详细]
  • Dijkstra算法求无向带权图最短路径——Java
    Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算 ... [详细]
  • 第十三章go实现分布式网络爬虫单机版爬虫
     网络爬虫分为两类1.通用爬虫:类似于baidu,google.他们会把大量的数据挖下来,保存到自己的服务器上.用户打开跳转的时候,其实先是跳转到他们自己的服务器. 2.聚焦爬虫: ... [详细]
  • 之前在命令行下面打印JSON的时候统统都是Cat,然后将结果复制到支持JSON解析的编辑器里面,非常曲折。简单的搜索了一下之后,在StackOverflow上找到了一篇文章。支持率 ... [详细]
  • 1.题目重点是存的位置在数组中数轴上放置了一些筹码,每个筹码的位置存在数组chips当中。你可以对任何筹码执行下面两种操作之一(不限操作次数 ... [详细]
  • 你知道MySQL锁,到底在锁什么吗?
    前言MySQL锁写过不少,那么这篇文章还是来和大家聊一聊MySQL的锁。只要学计算机,「锁」永远是一个绕不过的话题。MySQL锁也是一样。一句话解 ... [详细]
  • 摘要:对于类的成员(包括成员变量和成员方法)而言,其能否被其他类所访问,取决于该成员的修饰词;而 ... [详细]
  • R语言,一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。R本来是由来自新西兰奥克兰大学的RossIhaka和RobertGentleman开发(也因此称为R),现在由R开 ... [详细]
  • Spring系列(三):SpringIoC源码解析
    一、Spring容器类继承图二、容器前期准备IoC源码解析入口:调用构造函数AnnotationConfigApplicationContext调用this(),会默认先调用父类的 ... [详细]
  • 很多时候,在项目中需要打单子,生成pdf格式,还需要盖章。这个时候,就需要对pdf文件进行再次处理。处理的方式就是:1、获取要处理的位置2、将要盖章的图片添加上去代码如下:publ ... [详细]
  • ARM LCD屏调试3屏的应用编程
    2011-06-2519:20:47驱动自己写完了,应用函数自己就不写了,找了一点代码参考,移植并修改了一下,配合之前的定义的接口文档,我贴出部分代码。目录:一,开发环境1二 ... [详细]
  • 前后端分离 以及使用工具 基础
    前后端分离开发YapiSwagger项目部署在项目中,前端代码和后端代码混合在一起,是存在问题的,存在什么问题呢?主要存在以下几点问题:1).开发人员同时负责前端和后 ... [详细]
  • 难度:简单一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 ... [详细]
  • 求节点到根的距离的迭代程序原文:https://www.ge ... [详细]
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社区 版权所有