leetcode数论(​3044. 出现频率最高的质数)-质数判断

news2024/9/19 10:07:53

前言

经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。现阶段开始专项练习。

描述

给你一个大小为 m x n 、下标从 0 开始的二维矩阵 mat 。在每个单元格,你可以按以下方式生成数字:

  • 最多有 8 条路径可以选择:东,东南,南,西南,西,西北,北,东北。
  • 选择其中一条路径,沿着这个方向移动,并且将路径上的数字添加到正在形成的数字后面。
  • 注意,每一步都会生成数字,例如,如果路径上的数字是 1, 9, 1,那么在这个方向上会生成三个数字:1, 19, 191 。

返回在遍历矩阵所创建的所有数字中,出现频率最高的、大于 10

质数

;如果不存在这样的质数,则返回  -1  。如果存在多个出现频率最高的质数,那么返回其中最大的那个。

注意:移动过程中不允许改变方向。

示例 1:


输入:mat = [[1,1],[9,9],[1,1]]
输出:19
解释: 
从单元格 (0,0) 出发,有 3 个可能的方向,这些方向上可以生成的大于 10 的数字有:
东方向: [11], 东南方向: [19], 南方向: [19,191] 。
从单元格 (0,1) 出发,所有可能方向上生成的大于 10 的数字有:[19,191,19,11] 。
从单元格 (1,0) 出发,所有可能方向上生成的大于 10 的数字有:[99,91,91,91,91] 。
从单元格 (1,1) 出发,所有可能方向上生成的大于 10 的数字有:[91,91,99,91,91] 。
从单元格 (2,0) 出发,所有可能方向上生成的大于 10 的数字有:[11,19,191,19] 。
从单元格 (2,1) 出发,所有可能方向上生成的大于 10 的数字有:[11,19,19,191] 。
在所有生成的数字中,出现频率最高的质数是 19 。

示例 2:

输入:mat = [[7]]
输出:-1
解释:唯一可以生成的数字是 7 。它是一个质数,但不大于 10 ,所以返回 -1 。

示例 3:

输入:mat = [[9,7,8],[4,6,5],[2,8,6]]
输出:97
解释: 
从单元格 (0,0) 出发,所有可能方向上生成的大于 10 的数字有: [97,978,96,966,94,942] 。
从单元格 (0,1) 出发,所有可能方向上生成的大于 10 的数字有: [78,75,76,768,74,79] 。
从单元格 (0,2) 出发,所有可能方向上生成的大于 10 的数字有: [85,856,86,862,87,879] 。
从单元格 (1,0) 出发,所有可能方向上生成的大于 10 的数字有: [46,465,48,42,49,47] 。
从单元格 (1,1) 出发,所有可能方向上生成的大于 10 的数字有: [65,66,68,62,64,69,67,68] 。
从单元格 (1,2) 出发,所有可能方向上生成的大于 10 的数字有: [56,58,56,564,57,58] 。
从单元格 (2,0) 出发,所有可能方向上生成的大于 10 的数字有: [28,286,24,249,26,268] 。
从单元格 (2,1) 出发,所有可能方向上生成的大于 10 的数字有: [86,82,84,86,867,85] 。
从单元格 (2,2) 出发,所有可能方向上生成的大于 10 的数字有: [68,682,66,669,65,658] 。
在所有生成的数字中,出现频率最高的质数是 97 。

提示:

  • m == mat.length
  • n == mat[i].length
  • 1 <= m, n <= 6
  • 1 <= mat[i][j] <= 9

实现原理与步骤

1.8个方便遍历集合组成的数据

2.素数判断,由于数据较为稀疏,当个判断效率更高。

3.根据结果规则返回结果。

实现代码

class Solution {
    public int mostFrequentPrime(int[][] mat) {
        int row = mat.length;
        int col = mat[0].length;
        HashMap<Integer, Integer> map = new HashMap();
        int[][] direct = { { 0, 1 }, { 0, -1 }, { -1, 0 }, { 1, 0 }, { 1, 1 }, { 1, -1 }, { -1, -1 }, { -1, 1 } };
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                for (int[] d : direct) {
                    //v由于随着该方向延伸动态变化,需要在新的方向搜索时初始化
                    int v = mat[i][j];
                    int x = i + d[0];
                    int y = j + d[1];
                    while (x >= 0 && x < row && y >= 0 && y < col) {
                        v = v * 10 + mat[x][y];
                        if (isPrime(v)) {
                            map.merge(v, 1, Integer::sum);
                        }
                        x += d[0];
                        y += d[1];
                    }
                }
            }
        }
        int res=-1;
        int maxCnt=-1;
        for(Map.Entry<Integer,Integer> entry:map.entrySet()){
            int v=entry.getKey();
            int c=entry.getValue();
            if(c>maxCnt){
                res=v;
                maxCnt=c;
            }else if(c==maxCnt){
                res=Math.max(res,v);
            }
        }
        return res;
    }

    public boolean isPrime(int x) {
        for (int i = 2; i * i <= x; i++) {
            if (x % i == 0) {
                return false;
            }
        }
        return true;
    }
}

1.QA:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1986966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

宝兰德JVM参数查看及优化

最近生产环境宝兰德服务总是莫名奇妙的宕掉&#xff0c;很是搞人心态&#xff08;幸好是集群服务器多&#xff0c;总有一台提供服务&#xff09;&#xff0c;初步排查是内存溢出导致&#xff0c;需要进行宝兰德JVM进行调整 调整宝兰德&#xff08;BES&#xff09;JVM参数通常涉…

Spring源码解析(29)之AOP动态代理对象创建过程分析

一、前言 在上一节中我们已经介绍了在createBean过程中去执行AspectJAutoProxyCreator的after方法&#xff0c;然后去获取当前bean适配的advisor&#xff0c;如果还不熟悉的可以去看下之前的博客&#xff0c;接下来我们分析Spring AOP是如何创建代理对象的&#xff0c;在此之前…

38. 115.不同的子序列,583. 两个字符串的删除操作,72. 编辑距离,编辑距离总结篇

确定dp数组以及下标的含义。dp[i][j]&#xff1a;以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。确定递推公式。这一类问题&#xff0c;基本是要分析两种情况&#xff1a;s[i - 1] 与 t[j - 1]相等&#xff1b;s[i - 1] 与 t[j - 1] 不相等。当s[i - 1] 与 t[j -…

【屏驱MCU】RT-Thread 文件系统接口解析

本文主要介绍【屏驱MCU】基于RT-Thread 系统的文件系统原理介绍与代码接口梳理 目录 0. 个人简介 && 授权须知1. 文件系统架构1.1 虚拟文件系统目录架构 2. menuconfig 分析3. 代码接口分析3.1 DFS框架挂载目录3.2 【FAL抽象层】分区表和设备表3.3 如何将【文件路径】挂…

计算机毕业设计PySpark+Django考研推荐系统 考研分数线预测 中公考研爬虫 混合神经网络推荐算法 考研可视化 机器学习 深度学习 大数据毕业设计

《PySparkDjango考研推荐系统》开题报告 一、研究背景与意义 1.1 研究背景 随着社会对高学历人才需求的不断增加&#xff0c;研究生入学考试&#xff08;考研&#xff09;已成为众多大学毕业生追求深造的重要途径。然而&#xff0c;考研涉及的知识面广泛且复杂&#xff0c;考…

Unity补完计划 之Tilemap

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正 1.Tilemap 是什么 Q&#xff1a;和 SpriteShape有什么区别&#xff1f; A&#xff1a;tilemap强项在于做重的复背景&…

产品经理-​桌面端、手机端、电视端、平板端在设计上的异同(29)

在互联网产品当中,产品形态,pc网页端,客户端,安卓,苹果端,小程序端等 不同的设备,交互设计、产品设计是不一样的,面对的用户群体不一样,产品的设计,规则也是不一样的 这个考查的是PM的交互设计知识&#xff0c;需要知道一般性的交互设计原则与各端设计差异 互联网的各端产品&am…

树莓派新版本在interface options中找不到camera选项

文章目录 问题原因&#xff1a; 操作方法&#xff1a; 1.系统升级 2. 安装libcamera 3. 测试拍照 4. 拍照和视频 5. 查看图片 问题原因&#xff1a; 版本问题&#xff0c;自2023.10之后的新版本中&#xff0c;树莓派去除了原先使用的picamera库&#xff0c;所以不能通过…

Unity补完计划之 Tile Palette

1.Tile Palette Creating a Tile Palette - Unity 手册 瓦片调色板&#xff08;Tile Palette&#xff09;是 Unity 引擎中用于在瓦片地图上进行绘制的工具。它允许您选择和管理颜色、纹理和瓦片&#xff0c;以便在游戏场景中创建地图、背景和其他2D元素 说白了&#xff0c;Ti…

win11启动IIS服务配置成web服务器·

为什么要将本地配置为 Web 服务器&#xff1f; 在 Web 开发过程中&#xff0c;将本地配置为 Web 服务器有诸多好处&#xff1a; 实时预览: 修改代码后&#xff0c;无需每次都上传到远程服务器&#xff0c;即可在本地浏览器中实时查看效果。 离线开发: 无需依赖网络连接&#x…

如何搭建一个圈子社区系统?开源社交陪玩交友圈子论坛帖子系统保姆级搭建教程!

整体部署流程如下&#xff1a; 1.获取源码/前后端分离&#xff0c;前端Uniapp vue2.0 后端thinkphp6&#xff08;Gitee直达&#xff09; 2.服务器安装宝塔&#xff08;已有宝塔请安装环境&#xff0c;Nginx或者Apache/ php 7.3/ mysql 5.6 &#xff09; 3.进入宝塔添加网站&…

实验8-1-5 使用函数的选择法排序

本题要求实现一个用选择法对整数数组进行简单排序的函数。 函数接口定义&#xff1a; void sort( int a[], int n );其中a是待排序的数组&#xff0c;n是数组a中元素的个数。该函数用选择法将数组a中的元素按升序排列&#xff0c;结果仍然在数组a中。 输入样例&#xff1a; …

XFS超级块介绍-xfs_sb

XFS超级块介绍 与其他 Unix 文件系统一样&#xff0c;XFS 的超级块在文件系统的第一个扇区&#xff0c;它帮助解码文件系统。超级块占用每个 XFS AG 的前 512 个字节。主超级块是位于文件系统前面的 AG 0 中的超级块&#xff0c;其他 AG 中的超级块用于冗余。目前仅使用超级块…

leetcode-238. 除自身以外数组的乘积

题目描述 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(…

【Nuxt】自定义插件和生命周期

自定义插件 方式一&#xff1a; app.vue // 创建插件(在app.vue中创建全局可以使用 而在某个页面中创建只有该页面可以使用) // 方式一&#xff1a; const nuxtApp useNuxtApp(); nuxtApp.provide("formDate", () > {return "2023-12-12"; }) nuxtAp…

vue相关

1,Object.defineProperty和Proxy区别 定义、优缺点、区别 Object.defineProperty&#xff1a;vue2中实现数据监听/响应式的核心API。 Object.defineProperty遍历监听&#xff08;observer&#xff09;vue对象中的所有属性&#xff1a;data&#xff0c;props&#xff0c;comp…

基于深度学习的太阳暗条检测(2020年以来)

A universal method for solar filament detection from Hα observations using semi-supervised deep learning A&A, 686, A213 (2024) A universal method for solar filament detection from Hα observations using semi-supervised deep learning (aanda.org) ABS…

SpringBoot依赖之Quartz Scheduler定时调度器

Quartz Scheduler 依赖名称: Quartz Scheduler功能描述: Schedule jobs using Quartz.使用 Quartz 安排作业。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency&…

论文笔记: 视频关键帧抽取相关工作

2024-08-06&#xff0c;星期二&#xff0c;北京&#xff0c;晴 今天来看视频关键帧抽取主题。随着最近Sora文生视频的火热&#xff0c;视频相关的数据获得逐渐变得重要起来。这也就涉及到提取视频关键帧的问题。 从文本生成视频&#xff0c;我们拆分来看&#xff0c;一般流程…

泳泳馆押金原路退回系统,一键操作秒到账 押金+手牌+电子押金单

一、游泳馆手牌收押金必要性 游泳馆手牌收押金有以下必要性&#xff1a; 1. 防止手牌丢失&#xff1a;手牌是顾客在游泳馆内存储个人物品和进出更衣室的重要凭证。收押金可以让顾客更加重视手牌&#xff0c;降低丢失的概率。比如说&#xff0c;有的顾客可能会因为粗心大意随手…