牛客NC278 删除链表中重复的结点【中等 链表 Java,Go,PHP】

题目

题目链接:

https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef

这题有一次面试某团的第一道题

思考

链表的基本操作

参考答案Java

java 复制代码
import java.util.*;
/*
 public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    public ListNode deleteDuplication(ListNode pHead) {
        //map统计重复节点
        Map<Integer, Integer> cnt = new HashMap<>();
        ListNode cur = pHead;

        while (cur != null) {
            int k = cur.val;
            if (!cnt.containsKey(k))
                cnt.put(k, 0);

            cnt.put(k, cnt.get(k) + 1);

            cur = cur.next;
        }


        ListNode newNode = new ListNode(-1);
        ListNode tmp = newNode;
        cur = pHead;

        while (cur != null) {
            int k = cur.val;
            ListNode next = cur.next;
            if (cnt.get(k) == 1) {
                cur.next = null;
                tmp.next = cur;
                tmp = cur;
            }

            cur = next;
        }

        return newNode.next;
    }
}

参考答案Go

go 复制代码
package main

import . "nc_tools"

/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * @param pHead ListNode类
 * @return ListNode类
 */
func deleteDuplication(pHead *ListNode) *ListNode {
	//map统计节点
	cnt := map[int]int{}
	cur := pHead

	for cur != nil {
		_, ok := cnt[cur.Val]
		if !ok {
			cnt[cur.Val] = 0
		}

		cnt[cur.Val] = cnt[cur.Val] + 1
		cur = cur.Next
	}

	newNode := &ListNode{-1, nil}
	tmp := newNode

	cur = pHead
	for cur != nil {
		k := cur.Val
		next := cur.Next

		if cnt[k] == 1 {
			cur.Next = nil
			tmp.Next = cur
			tmp = cur
		}

		cur = next
	}

	return newNode.Next
}

参考答案PHP

php 复制代码
<?php

/*class ListNode{
    var $val;
    var $next = NULL;
    function __construct($x){
        $this->val = $x;
    }
}*/

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param pHead ListNode类 
 * @return ListNode类
 */
function deleteDuplication( $pHead )
{
   //map统计次数
    $cnt = array();

    $cur =$pHead;
    while ($cur!=null){
        $k = $cur->val;
        if(!isset($cnt[$k])){
            $cnt[$k] = 0;
        }

        $cnt[$k]+=1;

        $cur = $cur->next;
    }


    $newNode = new ListNode(-1);
    $tmp = $newNode;
    $cur = $pHead;
    while ($cur!=null){
        $k = $cur->val;
        $next = $cur->next;
        if($cnt[$k] ==1){
            $cur->next = null;
            $tmp->next = $cur;
            $tmp=$cur;
        }
        $cur = $next;
    }

    return $newNode->next;
}
相关推荐
hsling松子4 小时前
使用PaddleHub智能生成,献上浓情国庆福
人工智能·算法·机器学习·语言模型·paddlepaddle
dengqingrui1234 小时前
【树形DP】AT_dp_p Independent Set 题解
c++·学习·算法·深度优先·图论·dp
C++忠实粉丝4 小时前
前缀和(8)_矩阵区域和
数据结构·c++·线性代数·算法·矩阵
ZZZ_O^O5 小时前
二分查找算法——寻找旋转排序数组中的最小值&点名
数据结构·c++·学习·算法·二叉树
CV-King5 小时前
opencv实战项目(三十):使用傅里叶变换进行图像边缘检测
人工智能·opencv·算法·计算机视觉
代码雕刻家6 小时前
数据结构-3.9.栈在递归中的应用
c语言·数据结构·算法
雨中rain6 小时前
算法 | 位运算(哈希思想)
算法
Kalika0-07 小时前
猴子吃桃-C语言
c语言·开发语言·数据结构·算法
代码雕刻家7 小时前
课设实验-数据结构-单链表-文教文化用品品牌
c语言·开发语言·数据结构
sp_fyf_20248 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-02
人工智能·神经网络·算法·计算机视觉·语言模型·自然语言处理·数据挖掘