首页 > 其他分享 >【leetcode】【83】【删除排序链表中的重复元素】

【leetcode】【83】【删除排序链表中的重复元素】

时间:2023-06-30 10:25:49浏览次数:66  
标签:cursor curr val list next 链表 83 ListNode leetcode

c++

第一个方法

代码

#include <algorithm>
#include <iostream>
#include <memory>
#include <vector>

// Definition for singly-linked list.
struct ListNode {
    int       val;
    ListNode* next;
    ListNode() : val(0), next(nullptr) {}
    ListNode(int x) : val(x), next(nullptr) {}
    ListNode(int x, ListNode* next) : val(x), next(next) {}
};

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* head) {
        if (nullptr == head) {
            return head;
        }
        ListNode* ret    = head;
        ListNode* curr   = ret;
        ListNode* cursor = head->next;
        while (nullptr != cursor) {
            if (curr->val == cursor->val) {
                cursor = cursor->next;
                continue;
            }

            curr->next = cursor;
            cursor     = cursor->next;
            curr       = curr->next;
            curr->next = nullptr;
        }
        curr->next = nullptr;
        return ret;
    }
};

static void fill_list(ListNode* list, std::vector<int> data) {
    ListNode* curr = list;
    for (auto i = 0; i < data.size(); i++) {
        curr->val = data[i];
        if (i < data.size() - 1) {
            curr->next = new ListNode();
            curr       = curr->next;
        }
    }
}

static void print_list(ListNode* list) {
    if (nullptr == list) {
        return;
    }
    ListNode* curr = list;
    while (nullptr != curr) {
        std::cout << curr->val << " ";
        curr = curr->next;
    }
    std::cout << std::endl;
}

int main() {
    auto l1 = std::make_unique<ListNode>();
    fill_list(l1.get(), {1, 1});
    print_list(l1.get());

    auto solution = std::make_unique<Solution>();
    auto result   = solution->mergeTwoLists(l1.get());
    print_list(result);

    std::cout << "Hello World!" << std::endl;
}

运行效果

image

java

第一个方法

代码

ListNode.java

package com.laolang.leetcode;
 
public class ListNode {
 
    public int val;
    public ListNode next;
 
    public ListNode() {
    }
 
    public ListNode(int val) {
        this.val = val;
    }
 
    public ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}

Solutio.java

package com.laolang.leetcode;

import java.util.Objects;

public class Solution {

    public ListNode deleteDuplicates(ListNode head) {
        if (Objects.isNull(head)) {
            return head;
        }

        ListNode ret = head;
        ListNode curr = ret;
        ListNode cursor = head;
        while (Objects.nonNull(cursor)) {
            if (curr.val == cursor.val) {
                cursor = cursor.next;
                continue;
            }

            curr.next = cursor;
            cursor = cursor.next;
            curr = curr.next;
        }
        curr.next = null;

        return ret;
    }
}

CommonTest.java

package com.laolang.leetcode;

import java.util.List;
import java.util.Objects;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.testng.collections.Lists;

public class CommonTest {

    private Solution solution;
    private ListNode list1;


    private void fillList(ListNode list, List<Integer> data){
        ListNode node = list;
        for (int i = 0; i < data.size(); i++) {
            node.val =  data.get(i);
            if( i < data.size() - 1){
                node.next = new ListNode();
                node = node.next;
            }
        }
    }

    @BeforeClass
    public void beforeClass(){
        solution = new Solution();
        list1 = new ListNode();
        fillList(list1, Lists.newArrayList(1,1,2,3,3));
    }

    private void printList(ListNode list){
        if(Objects.isNull(list) ){
            return ;
        }
        ListNode curr = list;
        while( Objects.nonNull(curr)){
            System.out.print(curr.val);
            System.out.print(" ");
            curr = curr.next;
        }
        System.out.println();
    }

    @Test
    public void testOne(){
        printList(list1);

        ListNode ret = solution.deleteDuplicates(list1);
        printList(ret);
    }
}

运行效果

image

标签:cursor,curr,val,list,next,链表,83,ListNode,leetcode
From: https://www.cnblogs.com/khlbat/p/17515875.html

相关文章

  • 数据结构与算法 - 链表
    双链表的的基本结构从STL源码抽出的基本双链表结构代码#ifndef_GRAVER_GLIB_LIST_H_#define_GRAVER_GLIB_LIST_H_#include<cstddef>#include"graver/util/log_util.h"namespacegraver{//内部结构与方法放在detailnamespacedetail{/***@brief链表结......
  • https://leetcode.cn/ 第9题 判断回文数
    #回文数121是;123不是#定义一个函数判断是否是回文数defget_Hui(num):#将整数num转字符串str_num=str(num)str_num_change=str_num[::-1]num2=int(str_num_change)#判断整数num和num2是否相等if(num2==num):print("是......
  • 带头结点单链表插入,删除,查找与排序实现一个简单的基于链表结构的学生管理系统
    链表结构和操作方法////CreatedbyAdministratoron2023/6/12.//#ifndefCODE_LINKEDLIST_H#defineCODE_LINKEDLIST_H#include<iostream>#include<cstring>#include<stdlib.h>#include"student.h"typedefstructlink_list{//......
  • leetcode动态规划-
    什么是动态规划动态规划的定义和特点动态规划的基本思想和步骤动态规划的分类和常见问题线性动态规划最长公共子序列最长递增子序列最大子数组和区间动态规划矩阵链乘法括号化问题背包动态规划0-1背包问题完全背包问题多重背包问题状态压缩动态规划......
  • 二叉树-前序遍历-leetcode222
    给你一棵完全二叉树的根节点root,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第h层,则该层包含1~2h个节点。示例1:输入:root=[1,2,3......
  • leetcode动态规划题目总结
     ref:https://leetcode.cn/circle/article/2Xxlw3/ 这是一篇我在leetcode.com上撰写的文章DynamicProgrammingSummary,就不翻回中文了,直接copy过来了。Helloeveryone,IamaChinesenoobprogrammer.Ihavepracticedquestionsonleetcode.comfor2years.During......
  • leetcode -- Subsets I &II-- 重点,求0,1序列
    Subsetshttps://leetcode.com/problems/subsets/思路1这里其实就是把Combination拿到题目的思路2,收集那种组合树所有root到其余节点(不包括root本身)path。classSolution:#@paramS,alistofinteger#@returnalistoflistsofintegerdefsubsets(self,S):......
  • JavaScript 链表的增删改查
       //节点对象classNode{constructor(data){this.data=data;//存储节点数据this.next=null;//存储下一个节点的引用,默认为null}}//链表对象classLinkedList{constructor(){this.head=null;//链表头节点,默认为null}......
  • leetcode -- Kth Smallest Element in a BST -- 简单重点
    https://leetcode.com/problems/kth-smallest-element-in-a-bst/这里注意BST的leftsubtree所有**node都要小于root,rightsubtree所有node都要大于**root。没有等于,并且是所有node思路1非递归用stack用inorder的模板就行classSolution(object):definorder(self,root,......
  • 动态规划-背包问题-完全背包问题:leetcode 377. 组合总和 Ⅳ
    1.题目读题给你一个由不同整数组成的数组nums,和一个目标整数target。请你从nums中找出并返回总和为target的元素组合的个数。题目数据保证答案符合32位整数范围。 示例1:输入:nums=[1,2,3],target=4输出:7解释:所有可能的组合为:(1,1,1,1)(1,1,2)(1,2,......