​《Java入门一百例》



文章目录

序、专栏前言

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

序、本章前言

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

一、【例题1】

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

2、解题思路

  【第04天】给定 n 个正整数,输出最大与最小的数_初始化:⭐️

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

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、代码解析

  • 【第04天】给定 n 个正整数,输出最大与最小的数_开发语言_02​​​Math​​的意思是数学,顾名思义,它内部自带了许许多多强大的关于数学的库函数功能。
  • 【第04天】给定 n 个正整数,输出最大与最小的数_最小值_03​​​max​​​函数可以传入两个参数,它将返回较大值,而​​min​​​将返回最小值。两个函数暂时已知可以传入的基本类型有​​int​​​、​​long​​​、​​double​​​、​​float​​,当然传入的两个参数类型要一致。
  • 【第04天】给定 n 个正整数,输出最大与最小的数_算法_04由于​​​a,b,c​​​只有三个数,我们只需要嵌套使用​​max​​​和​​min​​函数即可返回答案再输出。

二、【例题2】

  给定一个整数 【第04天】给定 n 个正整数,输出最大与最小的数_开发语言_05,接下来输出 【第04天】给定 n 个正整数,输出最大与最小的数_最小值_06 个整数 【第04天】给定 n 个正整数,输出最大与最小的数_java_07,请你输出最大的整数和最小的整数是多少?

2、解题思路

  【第04天】给定 n 个正整数,输出最大与最小的数_初始化:⭐️

  由于【第04天】给定 n 个正整数,输出最大与最小的数_最小值_09可能非常大,直接一行使用​​​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、代码解析

  • 【第04天】给定 n 个正整数,输出最大与最小的数_开发语言_02由于只是求最大值与最小值,所以不需要将元素先读入数组,可以一边读入一边判断
  • 【第04天】给定 n 个正整数,输出最大与最小的数_最小值_03m1用来存储最大值,所以它初始化为​​​Integer.MIN_VALUE​​,表示负无穷,这样能够保证无论选中任何数都一定会比m1大,也就一定能更新答案
  • 【第04天】给定 n 个正整数,输出最大与最小的数_算法_04m2同理,由于它需要存储一个最小值,所以将其初始化成正无穷​​​Integer.MAX_VALUE​​,这样无论选中任何数都一定比m2小,也就一定能更新答案。

【第04天】给定 n 个正整数,输出最大与最小的数_开发语言_13

三、【例题3】

  给定一个整数 【第04天】给定 n 个正整数,输出最大与最小的数_开发语言_05,接下来输出 【第04天】给定 n 个正整数,输出最大与最小的数_最小值_06 个整数 【第04天】给定 n 个正整数,输出最大与最小的数_初始化_16,请你输出最大的整数和最小的整数的下标 【第04天】给定 n 个正整数,输出最大与最小的数_java_17 是多少?如果有相同的最大或者最小的数,请输出最小的下标

2、解题思路

  【第04天】给定 n 个正整数,输出最大与最小的数_初始化:⭐️⭐️

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

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);
}
}

【第04天】给定 n 个正整数,输出最大与最小的数_最小值_19

四、课后习题

序号

题目链接

难度评级

1

​值相等的最小索引​

1

2

​找到最接近0的数字​

1

???? 学习有疑问?????