IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【第04天】给定 n 个正整数,输出最大与最小的数 -> 正文阅读

[Java知识库]【第04天】给定 n 个正整数,输出最大与最小的数

本文已收录于专栏
🌸《Java入门一百例》🌸

序、专栏前言

?? 本专栏开启,目的在于帮助大家更好的掌握学习Java,特别是一些Java学习者难以在网上找到系统地算法学习资料帮助自身入门算法,同时对于专栏内的内容有任何疑问都可在文章末尾添加我的微信给你进行一对一的讲解。
?? 但最最主要的还是需要独立思考,对于本专栏的所有内容,能够进行完全掌握,自己完完全全将代码写过一遍,对于算法入门肯定是没有问题的。
?? 算法的学习肯定不能缺少总结,这里我推荐大家可以到高校算法社区将学过的知识进行打卡,以此来进行巩固以及复习。
??学好算法的唯一途径那一定是题海战略,大量练习的堆积才能练就一身本领。专栏的任何题目我将会从【题目描述】【解题思路】【模板代码】【代码解析】等四板块进行讲解。

序、本章前言

?? 从一堆数中,获得最大与最小值。这种需求的场景是非常多见的,今天我们也来仔细分析究竟有多少种操作可以完成我们的需求。

一、【例题1】

??给定三个整数a b c,请你输出三个数中最大的数与最小的数。

2、解题思路

?? 难 度 评 级 难度评级 :??

??这种只有三个数字,需要我们找出最大值与最小值的情况,我们一般是无法去进行排序的,因为通常它们三个是不在一个数组中的。这时我们要用到Math类中的函数maxmin了。

3、模板代码

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();
        int c=sc.nextInt();
        int max=Math.max(Math.max(a,b),c);
        int min=Math.min(Math.min(a,b),c);
        System.out.println(max);
        System.out.println(min);
    }
}

4、代码解析

  • ( 1 ) (1) (1)Math的意思是数学,顾名思义,它内部自带了许许多多强大的关于数学的库函数功能。
  • ( 2 ) (2) (2)max函数可以传入两个参数,它将返回较大值,而min将返回最小值。两个函数暂时已知可以传入的基本类型有intlongdoublefloat,当然传入的两个参数类型要一致。
  • ( 3 ) (3) (3)由于a,b,c只有三个数,我们只需要嵌套使用maxmin函数即可返回答案再输出。

二、【例题2】

??给定一个整数 n ( 0 ≤ n ≤ 1000 ) n( 0\leq n \leq 1000) n(0n1000),接下来输出 n n n 个整数 a i ( ? 1 0 4 ≤ a i ≤ 1 0 4 ) a_i(-10^4 \leq a_i \leq 10^4) ai?(?104ai?104),请你输出最大的整数和最小的整数是多少?

2、解题思路

?? 难 度 评 级 难度评级 :??

??由于 n n n可能非常大,直接一行使用max或者min函数肯定是非常不方便的,代码会非常长,此时我们考虑结合循环来完成操作。

3、模板代码

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        //m1记录最大值,m2记录最小值
        int m1=Integer.MIN_VALUE;
        int m2=Integer.MAX_VALUE;
        for (int i = 0; i < n; i++) {
            int x=sc.nextInt();
            m1=Math.max(m1,x);
            m2=Math.min(m2,x);
        }
    }
}

4、代码解析

  • ( 1 ) (1) (1)由于只是求最大值与最小值,所以不需要将元素先读入数组,可以一边读入一边判断
  • ( 2 ) (2) (2)m1用来存储最大值,所以它初始化为Integer.MIN_VALUE,表示负无穷,这样能够保证无论选中任何数都一定会比m1大,也就一定能更新答案
  • ( 3 ) (3) (3)m2同理,由于它需要存储一个最小值,所以将其初始化成正无穷Integer.MAX_VALUE,这样无论选中任何数都一定比m2小,也就一定能更新答案。

在这里插入图片描述

三、【例题3】

??给定一个整数 n ( 0 ≤ n ≤ 1000 ) n( 0\leq n \leq 1000) n(0n1000),接下来输出 n n n 个整数 a i a_i ai?,请你输出最大的整数和最小的整数的下标 i i i 是多少?如果有相同的最大或者最小的数,请输出最小的下标

2、解题思路

?? 难 度 评 级 难度评级 :????

??这道题在上一道题进行了变形,我们需要去记录最大值和最小值的下标。所以需要手动去判断一下是否更新了最大值和最小值,同时再用两个变量去更新下标。

3、模板代码

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        //m1记录最大值,m2记录最小值
        int m1=Integer.MIN_VALUE;
        int m2=Integer.MAX_VALUE;
        int maxIndex=-1;
        int minIndex=-1;
        for (int i = 0; i < n; i++) {
            int x=sc.nextInt();
            if (x>m1){
                m1=x;
                maxIndex=i;
            }
            if (x<m2){
                m2=x;
                minIndex=i;
            }
        }
        System.out.println(maxIndex);
        System.out.println(minIndex);
    }
}

在这里插入图片描述

四、课后习题

序号题目链接难度评级
1值相等的最小索引1
2找到最接近0的数字1
👇 学习有疑问?👇
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-26 15:14:28  更:2022-05-26 15:16:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:36:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码