正值秋招,分享一道我在网上看到的算法题

发布时间:2026/8/4 21:23:08
正值秋招,分享一道我在网上看到的算法题 手撕问题是这样的有一个链表节点的值都是数字删除最少的节点使得链表中的数字都一样。---------------------------------------------------------------------------------------------------------------------------------思路分享仔细一看按照一般的思路就可以解出这道题难度不大。首先先建立一个哈希表然后键是遍历链表得到的数字然后值是每个数字出现的次数。然后再遍历哈希表得到最多次数的那个数字然后再遍历链表最后将不是该数字的数字都删掉。(--备注下面给出的代码都是我手写的未经调试运行大致看个思路即可如果有哪个地方有点错误恳请指出--)代码片段import java.util.*;/***结构体定义*/class ListNode{int val;ListNode next;ListNode(int val){this.valval;nextnull;}}public class sameList{public static void main(String[] args){ListNode headnew ListNode(1);//构造一个链表ListNode phead;Scanner sc new Scanner(System.in);int lensc.nextInt();for(int i0;ilen;i){ListNode qnew ListNode(0);q.val0;p.nextq;pq;}DeleList deli new DeleList();//创建对象ListNode k deli.deleList(head);//传入链表头节点while(k!null){System.out.println(k.val);kk.next;}}}class DeleList{public ListNode deleList(ListNode head){ListNode phead;MapInteger, Integer map new HashMap();while(p!null){map.put(p.val, map.getOrDefault(p.val, 0)1);pp.next;}int mark0, max_num0;for(Map.EntryInteger, Integer entry : map.entrySet()){//遍历哈希表Integer key entry.getKey();Integer value entry.getValue();if(max_numvalue){markkey;max_numvalue;}}ListNode yumnew ListNode(0);yum.nexthead;ListNode kyum;while(k.next!null){if(k.next.val!mark){k.nextk.next.next;}else{kk.next;}}return yum.next;}}