华为OD机试真题 Java 实现【找数字】【2023Q2 100分】

news2024/11/24 17:24:01

在这里插入图片描述

一、题目描述

给一个二维数组nums,对于每一个元素nums[i],找出距离最近的且值相等的元素,输出横纵坐标差值的绝对值之和,如果没有等值元素,则输出-1。

例如

输入数组nums为

0 3 5 4 2
2 5 7 8 3
2 5 4 2 4

  1. 对于 num[0][0]= 0,不存在相等的值;
  2. 对于 num[0][1] = 3,存在一个相等的值,最近的坐标为num[1][4],最小距离为4;
  3. 对于 num[0][2]= 5,存在两个相等的值,最近的坐标为num[1][1],故最小距离为2;
  4. 对于num[1][1]= 5,存在两个相等的值,最近的坐标为num[2][1],故最小距离为1;

输出

-1 4 2 3 3
1 1 -1 -1 4
1 1 2 3 2

二、输入描述

  1. 输入第一行为二维数组的行
  2. 输入第二行为二维数组的列
  3. 输入的数字以空格隔开

三、输出描述

数组形式返回所有坐标值。

四、补充说明

  1. 针对数组num[i][j],满足0<i<=100;0<j<=100;
  2. 对于每个数字,最多存在100个与其相等的数字;

五、Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int m = sc.nextInt();
    int[][] doubleArr = new int[n][m];

    // 将数组放入二维数组中
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            doubleArr[i][j] = sc.nextInt();
        }
    }
    System.out.println(get(doubleArr, n, m));
}

public static String get(int[][] doubleArr, int n, int m) {

    // 统计输入矩阵中,相同数字的位置
    Map<Integer, ArrayList<Integer[]>> map = new HashMap<Integer, ArrayList<Integer[]>>();
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            Integer num = doubleArr[i][j];
            Integer[] arr = {i, j};
            map.putIfAbsent(num, new ArrayList<>());
            map.get(num).add(arr);
        }
    }

    // 遍历矩阵每一个元素,和其他相同数字的位置求距离,取最小距离
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            int num = doubleArr[i][j];
            int min = Integer.MAX_VALUE;
            for (Integer[] arr : map.get(num)) {
                int a = arr[0];
                int b = arr[1];
                // 求最小距离
                if (a != i || b != j) {
                    int temp = Math.abs(a - i) + Math.abs(b - j);
                    min = Math.min(min, temp);
                }
            }
            doubleArr[i][j] = min == Integer.MAX_VALUE ? -1 : min;
        }
    }
    return Arrays.toString(Arrays.stream(doubleArr).map(Arrays::toString).toArray(String[]::new));
}

六、效果展示

1、输入

3
4
0 1 2 3
2 3 4 5
5 3 2 1

2、输出

[[-1, 4, 2, 3], [3, 1, -1, 4], [4, 1, 2, 4]]

3、说明

只有1个0,输出-1;
有两个1,距离4;
有三个2,距离一个3,一个2,取最小的值,所以为2;
有三个3,距离一个3,一个4,取最小的值,所以为3;

以此类推。

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【货币单位换算】【2023Q1 100分】

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述在这里插入代码片

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

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

相关文章

Java每日一练(20230517) 重复元素、链表重复元素、旋转数组

目录 1. 存在重复元素 &#x1f31f; 2. 删除排序链表中的重复元素 &#x1f31f; 3. 旋转数组 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 存在重…

让孩子们零基础也能学习人工智能,这家科技企业是这样做的

在偏远地区的孩子&#xff0c;即便没有任何人工智能知识和理论基础&#xff0c;也可以一步步迈入人工智能科技的殿堂&#xff1f; 你没有看错&#xff0c;这就是亚马逊云科技推出的“AI在未来”公益计划项目&#xff0c;如今已经进入了第二个学年。 “AI在未来”公益计划走进宁…

案例分享|地弹现象导致DCDC电源芯片工作不正常

很多读者都应该听过地弹&#xff0c;但是实际遇到的地弹的问题应该很少。本案例就是一个DCDC电源芯片的案例。 1. 问题描述 如下图1 &#xff0c;产品其中一个供电是12V转3.3V的电路&#xff0c;产品发货50K左右以后&#xff0c;大约有1%的产品无法启动&#xff0c;经过解耦定…

【Java8新特性】史上最全Optional实战教程,太厉害了!

目录 一、前置基础 二、什么是Optional 2.1理论拓展 三、为什么要用Optional 3.1俄罗斯式套娃判空详解 四、Optional基本知识 4.1API的思考 五、工作中如何正确使用Optional 5.1 orElseThrow 5.2 filter 5.3 orElse和orElseGet 5.4 map和flatMap 5.5 项目实战 实战…

16位单片机去哪儿了?

关注星标公众号&#xff0c;不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 最近网友问了一个问题&#xff1a;为什么现在很少看见16位单片机了&#xff1f; 你是不是也有这样的疑问&#xff1a;现在市面上大多都是32位Arm Coretx-M内核的单片机&#xff0c;…

〖技术人职业规划白宝书 - 职业规划篇①〗- 大学生选择职业前的自我认知与剖析

历时18个月&#xff0c;采访 850 得到的需求。 不管你是在校大学生、研究生、还是在职的小伙伴&#xff0c;该专栏有你想要的职业规划、简历、面试的答案。说明&#xff1a;该文属于 技术人职业规划白宝书 专栏&#xff0c;购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区&am…

【JS】1684- 重学 JavaScript API - Resize Observer API

❝ 前期回顾&#xff1a; 1. Page Visibility API 2. Broadcast Channel API 3. Beacon API ❞ &#x1f3dd; 什么是 Resize Observer API Resize Observer API[1] 可以帮助我们监听元素尺寸的变化&#xff0c;并在尺寸变化时执行一些操作。例如&#xff0c;我们可以使用 Resi…

突发!骨灰级程序员心梗离世!

大家注意&#xff1a;因为微信最近又改了推送机制&#xff0c;经常有小伙伴说错过了之前被删的文章&#xff0c;比如前阵子冒着风险写的爬虫&#xff0c;再比如一些限时福利&#xff0c;错过了就是错过了。 所以建议大家加个星标&#xff0c;就能第一时间收到推送。&#x1f44…

什么是鉴权?这些postman鉴权方式你又知道多少?

一、什么是鉴权&#xff1f; 鉴权也就是身份认证&#xff0c;就是验证您是否有权限从服务器访问或操作相关数据。发送请求时&#xff0c;通常必须包含相应的检验参数以确保请求具有访问权限并返回所需数据。通俗的讲就是一个门禁&#xff0c;您想要进入室内&#xff0c;必须通过…

PostgreSQL 为什么PG 的适用性很强(译)

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

ChatGPT常用提问技巧

上篇文章《ChatGPT万能提问技巧》中提到的万能提问技巧-RPEP提问法&#xff0c;家人们用ChatGPT能够轻松应对大部分的对话场景&#xff0c;获得更加出色的回答了吧&#xff01;今天&#xff0c;我们在提供两种常用的提问模式&#xff0c;让家人们使用ChatGPT都很轻松获得需要的…

Hive on Spark调优(大数据技术3)

3.1 Executor配置说明 3.1.1 Executor CPU核数配置 单个Executor的CPU核数&#xff0c;由spark.executor.cores参数决定&#xff0c;建议配置为4-6&#xff0c;具体配置为多少&#xff0c;视具体情况而定&#xff0c;原则是尽量充分利用资源。 此处单个节点共有16个核可供Exec…

时尚达人的深度学习:非洲服装检测

介绍 时尚在医疗、教育和农业等不同领域的人工智能领域并没有受到太多关注&#xff0c;包括机器学习、深度学习。这是因为时尚不被认为是一个关键领域. 时尚和文化在 AI 中并没有得到公正的对待。这是一个令人兴奋的项目&#xff0c;我们将在 8 种当地非洲服装之间建立一个分类…

科大讯飞版ChatGPT,厉害了!

前几天科大讯飞的星火认知大模型发布了&#xff0c;我刚好有朋友在科大讯飞工作&#xff0c;于是就第一时间体验了一波。 一番体验下来确实比我预想的效果要好&#xff0c;没想到国产模型的效果还不错&#xff0c;我试了很多方面&#xff0c;比如通用常识功能、写作功能、学习能…

2023 开源之夏来啦!报名 MegEngine 项目,赢取万元奖金!

“开源软件供应链点亮计划-暑期2023”是一项面向高校学生的暑期活动&#xff0c;为高校学生提供了绝佳的、友好开放的交流平台。使学生可以真正投身于开源软件的开发维护&#xff0c;得到资深开源软件开发者指导的机会&#xff0c;获得丰硕的活动奖金&#xff0c;并帮助学生获取…

【送书】前端系列14集-Vue3-setup

送书活动&#xff1a;挑选1名粉丝同学哦 免费包邮送。截止时间&#xff1a;2023/5/18号 19 : 00参与底部评论区说说&#xff1a;请在评论中分享你的阅读收获。 前端工程化&#xff1a;基于Vue.js 3.0的设计与实践实战 页面浏览量&#xff08;Page View&#xff0c;PV&#xff…

【004】C++数据类型之字符类型(char)详解

C数据类型之字符类型详解 引言一、背景知识二、字符常量三、字符变量四、键盘&#xff08;输入设备&#xff09;给字符变量赋值五、字符常量和字符串常量的区别六、案例&#xff1a;字符大小写转换总结 引言 &#x1f4a1; 作者简介&#xff1a;专注于C/C高性能程序设计和开发&…

知识变现海哥|为什么你无法将学到的知识变现

秋叶大叔在公众号里发了这样一篇文章《为什么今天的年轻人更要读大学&#xff1f;》&#xff0c;文章里提到这样一个观点&#xff1a;一个人的专业能力要获得优质的回报&#xff0c;还需要学一样「变现技能」。 我不由得想问一个问题&#xff1a;你真的理解变现能力吗&#xf…

微信公众号服务号客服对接-唯一客服系统文档中心

微信公众号客服功能&#xff0c;需要公众号为认证的服务号&#xff0c;可以实现公众号模板消息提醒&#xff0c;网页授权获取到微信的昵称头像&#xff0c;机器人或AI自动回复功能等 微信公众号后台设置 【设置与开发】【基本配置】 设置好公众号的AppID AppSecret IP白名单 【…

亚马逊云科技助力默沙东,用数字化技术赋能医药市场营销

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 在全球药企中&#xff0c;默沙东是封神的存在。提及其明星药物&#xff0c;我们接种的乙肝疫苗、麻疹疫苗、宫颈癌九价疫苗、快速短效麻醉剂、抗生素青霉素钾等药物皆出自于默沙东。 2022年&#xff0c;全球药企TOP 10营业收…