刷题之寻找 3 个数的最大乘积和拼数及四平方和_求三个数的乘积c语言

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

3)代码

2、拼数

1)题目

2)题目解读

3)代码

3、四平方和

1)题目

2)题目解读

3)代码

1、寻找 3 个数的最大乘积、

1)题目

实现一个算法在数组中找到 3 个数字的最大乘积。介绍如下:

例如数组 [5, -2, 3, 1, -1, 4] 中 3 个数字的最大乘积为 60。

输入格式:

第一行为数字 N(3≤N≤1000),表示数组元素的个数。

第二行为数组元素 Ai,−1000≤Ai ≤1000。

输出格式:

输出一行,为 3 个数字的最大乘积。

输入样例:

在这里给出一组输入。例如:

6
5 -2 3 1 -1 4

输出样例:

在这里给出相应的输出。例如:

60

2)题目解读

题目意思很简单,从输入的N个数中找到乘积最大的三个数。我们可以先对这些数进行排序,然后比较是 最小两个数(可能两个都是负数,负负得正)*最大数大还是 最大三个数的乘积大。

3)代码
import java.util.Arrays;
import java.util.Scanner;

public class Main{
    //7-6 寻找 3 个数的最大乘积
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] arr=new int[n];
        for (int i=0;i<arr.length;i++){
            arr[i]=sc.nextInt();
        }
        //对输入的数进行排序
        Arrays.sort(arr);
        //比较是 最小两个数(可能两个都是负数,负负得正)*最大数大
        // 还是 最大三个数的乘积大。
        int max=Math.max(arr[n-1]*arr[0]*arr[1],arr[n-1]*arr[n-2]*arr[n-3]);
        System.out.println(max);
    }
}

2、拼数

1)题目

设有 n 个正整数a1 …an ,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。

输入格式:

第一行有一个整数,表示数字个数 n。

第二行有 n 个整数,表示给出的 n 个整数 ai 。

其中,1≤n≤20,1≤ai ≤10^9。

输出格式:

输出一个正整数,表示最大的整数。

输入样例:

在这里给出一组输入。例如:

4
7 13 4 246

输出样例:

在这里给出相应的输出。例如:

7424613

2)题目解读

题目要求我们从n个数字中拼接出一个最大的数字并输出,我们可以实现一个比较器,去进行比较这些数的优先级,然后进行排序。

3)代码
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

//创建num类并实现Comparator接口
class num implements Comparator<String> {
//重写compare方法
    public int compare(String o1, String o2) {
        int i=0;
        while (true){
            //如果比较到后面,两个数字前面一直相等,则比较两数字的长度并返回
            if (i==o1.length()||i==o2.length()){
                return o1.length()-o2.length();
            }
            //如果两个数字的第i为相等则进入下次循环
            if (o1.charAt(i)==o2.charAt(i)) {
            }
            //如果第i位数字不同则进行比较并返回
            else {
                return o1.charAt(i)-o2.charAt(i);
            }
            i++;
        }
    }
}
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n= Integer.parseInt(sc.nextLine());


![img](https://img-blog.csdnimg.cn/img_convert/6405dcfa2f5435d15fd3eeb56c996a6b.png)
![img](https://img-blog.csdnimg.cn/img_convert/3aab212e1fa92fb39bbb42efb0f98c9a.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

204)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值