首页 > 编程语言 >环形链表_相交链表_多数元素(java语言)

环形链表_相交链表_多数元素(java语言)

时间:2023-04-15 10:01:36浏览次数:46  
标签:count head set java temp 环形 链表 return

环形链表

力扣141题

问题:

image-20230415094450256

image-20230412110532236

image-20230412110543854

思路:创建hashset,把链表的每个节点放到集合中,在放入的过程中检查这个节点是否已经存在,存在则证明存在环。

代码实现:

public class Solution {
    public boolean hasCycle(ListNode head) {
        Set<ListNode> set = new HashSet<>();
        while (head != null){
            if (set.contains(head))
                return true;
            set.add(head);
            head = head.next;
        }
        return false;
    }
}

相交链表

力扣160题

问题:

image-20230412111252665

image-20230412111307718

思路:先把其中一个链表的结点都放到一个hashset中,然后检索hashset,看是否包含这个节点,如果包含,则证明这个节点就是开始相交的节点,输出答案。

代码实现:

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        Set<ListNode> set = new HashSet<>();
        ListNode temp = headA;//头指针不方便移动,赋值给temp
        while (temp != null){
            set.add(temp);
            temp = temp.next;
        }
        temp = headB;
        while (temp != null){
            if (set.contains(temp))//如果保护这个节点,则直接返回这个节点。
                return temp;
            temp = temp.next;
        }
        return null;
    }
}

多数元素

力扣169题

问题:

image-20230415093459065

思路:数组中元素出现的次数很容易让人想到hashmap,所以把数组中每个出现的数字以及它们出现的次数放入到hashmap,然后遍历hashmap,判断哪个数字出现的次数大于nums.length / 2,是的话就把这个数字输出。

代码实现:

class Solution {
    public int majorityElement(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();
        //把数组中的每个数字和对应出现的次数存放到map中
        for(Integer i : nums){
            Integer count = map.get(i);
            count = count == null ? 1 : ++count;
            map.put(i,count);
        }
        //把数组中
        for(Integer i : map.keySet()){
            Integer count = map.get(i);
            if (count > nums.length / 2)
                return i;
        }
        return 0;
    }
}

标签:count,head,set,java,temp,环形,链表,return
From: https://www.cnblogs.com/malinyan/p/17320572.html

相关文章

  • (之前的项目复习)我的Java项目实战--校园餐饮商户外卖系统06
    开发笔记六导入用户地址簿相关功能代码需求分析地址簿,指的是移动端消费者用户的地址信息,用户登录成功后可以维护自己的地址信息。同一个用户可以有多个地址信息,但是只能有一个默认地址。数据模型用户的地址信息会存储在address_book表,即地址簿表中。具体表结构如下:导入功......
  • Java的访问修饰符
    为了实现面向对象程序设计(OOP)的封装这个特性,需要程序设计语言提供一定的语法机制来支持。这个语法机制就是访问权限控制(访问修饰符:public、protected、private、default)。在Java中,封装就意味着所有的实例域都带有private访问修饰符(私有的实例域),并提供带有public访问修饰符......
  • #yyds干货盘点# LeetCode程序员面试金典:K 个一组翻转链表
    题目:给你链表的头节点head,每 k 个节点一组进行翻转,请你返回修改后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。 示例1:输入:head=[1,......
  • Java + Jpcap实现监控 IP包流量
    Java+Jpcap实现监控IP包流量说明:本设计是计算机网络课程的课设,因为代码是提前实现的,本博客于后期补上,又因为代码没写注释自己也看不懂了,所以,仅供参考,就当提供一种实现方式。文中提供的资料来源于网络,本文仅用于学习交流,如有侵权,可联系我进行删除。效果图:1)课程设计要求1......
  • JAVAWEB-项目-实现登录功能步骤-2023-04-14
    第一步:编写前端页面第二步:设置首页第三步:编写dao层用户dao接口第四步:编写Servic层用户Service接口实现类第五步:编写Servic层用户Service接口第六步:编写Servic层用户Service接口实现类(用@Test测试一下是否可行)第七步:编写LoginServlet类第八步:web.xml注册LoginServlet第九......
  • 23-4-14--链表--银行排队问题之单队列多窗口服务
    假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。本题要求输出前来等待服务的N位顾客的平均等待时间、最长等待时间、最后完成时间,并且统......
  • Error occurred shutting down framework: java.lang.NumberFormatException: null(已
    今天在开启Nexus时报错:Erroroccurredshuttingdownframework:java.lang.NumberFormatException:null,如下图所示:  考虑到可能是路径中的中文所致,于是将文件夹移到英文目录,问题迎刃而解(以后安装路径中不要有中文)  ......
  • Java Stream常见用法汇总,开发效率大幅提升
    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~Github地址如果访问不了Github,可以访问gitee地址。gitee地址Java8新......
  • python分段读取word文件数据到MySQL数据库和Java读取word数据到MySQL数据库
    1、python分段读取word文件数据到MySQL数据库示例:(注:此示例为读取某个文件夹下的所有文件,并对文件后缀名为doc的文件进行读取,并以文件名称为id完成对该word内容的插入。)#导入os模块importos#导入所需库importpymysqlfromdocximportDocument#path定义要获取的......
  • java -- 线程(二)
    死锁死锁是指两个或两个以上的线程在执行过程中,由于竞争同步锁而产生的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的线程称为死锁。死锁的案例:同步代码块的嵌套创建锁对象:publicclassLock{public......