SQL如何建网站,租房合同 模板,免费发布黄页广告网站,学编程的网课平台写在前面 最近想复习一下数据结构与算法相关的内容#xff0c;找一些题来做一做。如有更好思路#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 删除有序链表中的重复元素。
示例#xff1a;
输入#xff1a;1-2…写在前面 最近想复习一下数据结构与算法相关的内容找一些题来做一做。如有更好思路欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 删除有序链表中的重复元素。
示例
输入1-2-3-3-5
输出1-2-3-5二、具体步骤
1.环境说明
名称说明IntelliJ IDEA2019.2
2.代码
以下为Java版本实现
public class Lc83_deleteDuplicates {public static void main(String[] args) {ListNode n5 new ListNode(5);ListNode n31 new ListNode(3, n5);ListNode n3 new ListNode(3, n31);ListNode n2 new ListNode(2, n3);ListNode head new ListNode(1, n2);ListNode.print(head);System.out.println();ListNode.print(deleteDuplicates(head));}/*** 约束条件有序链表* 返回值链表** 注意条件判断** 思路* 有序链表那么重复的值就会紧挨着** 使用快慢双指针* 如果值相等fast就往后去找不相等的值* 当值不相等时就把 fast 的值给 slow.next然后2个指针同时向后移动** 循环结束慢指针和后面的节点断开** 定义 slow head, fast head.next* while循环* if (fast ! null) slow.next fast; slow slow.next* fast fast.next** slow.next null** param head* return*/private static ListNode deleteDuplicates(ListNode head) {if (head null) {return null;}if (head.next null) {return head;}ListNode slow head, fast head.next;while (fast ! null) {if (slow.val ! fast.val) {slow.next fast;slow slow.next;}fast fast.next;}slow.next null;return head;}static class ListNode {int val;ListNode next;public ListNode() {}public ListNode(int val) {this.val val;}public ListNode(int val, ListNode next) {this.val val;this.next next;}public static void print(ListNode head) {while (head ! null) {if (head.next null) {System.out.print(head.val);} else {System.out.print(head.val , );}head head.next;}}}
}写在后面 如果本文内容对您有价值或者有启发的话欢迎点赞、关注、评论和转发。您的反馈和陪伴将促进我们共同进步和成长。