java机试题目汇总以及问题总结

一、最大乘积问题题目描述## 标题给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)输入描述:输入共2行,第一行包括一个整数n,表示数组长度。第二行为n个以空格隔开的整数,分别为A1,A2, … ,An输出描述:满足条件的最大乘积示例1输入43 4 1 2输出24[点击并拖拽以移动]思路:本问题...
摘要由CSDN通过智能技术生成

一、最大乘积问题

题目描述

给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)

输入描述:

输入共2行,第一行包括一个整数n,表示数组长度。第二行为n个以空格隔开的整数,分别为A1,A2, … ,An

输出描述:
满足条件的最大乘积
示例1
输入
4
3 4 1 2

输出
24
思路:

本问题即找到一个已知数组的三个最大值。延伸一下,也就是说找到数组的最大值,以及两个次大值或者两个最小值。因为两个负数之积为正数。

问题解决
1、java机试的输入输出问题

我之前用的输入流为Scanner函数。后来更改为了BufferedReader函数。需要注意它们的区别:

(1)Scanner函数获得输入数据的依据是Space键、Enter键、以及Tab键。而题目中第二行给的数组数据是以空格键隔开,所以该函数不能使用。

(2)BufferedReader函数通过Enter键获得输入数据,其中Enter键不计入数据。所以这个函数的数据我们能通过readLine方法获得。

注意:在使用BufferedReader函数时要处理IOException异常,除了声明该异常以外,在对应方法的方法名字后也应该throw出来。
2、数据类型以及运算超出范围的问题。

要注意到在max1,max2,max3,min1,min2找到后,他们的运算可能会超出int类型的预算范围。所以在return之前要把他们的预算结果强制转换为long类型。

未解决问题或者疑惑

在写这篇博客的时候我有一个新问题:如果出现数字零呢?
已经想清楚了!!!存在零的数据一定小于等于或者大于等于另一组数据。(都存在零,或者只有一组存在)

二、大整数乘法

题目描述

有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。

输入描述:

空格分隔的两个字符串,代表输入的两个大整数

输出描述:

输入的乘积,用字符串表示

示例1
输入
72106547548473106236 982161082972751393

输出
70820244829634538040848656466105986748
思路:

我在网上看到的解决方案有一些是使用分治法,但是我还没有复习到,所以我使用的是另一种方法。方法解析如下图:
大整数乘法思路解析图
我们可以将两个大整数分解成为两个int数组,每个下标里存放一位数(从下标0开始为个位数)。然后利用两重循环将数字两两相乘,按照下标将积存放在二位数组中(比如A0与B9的积存放在数组Array[0][9]中,A6与B8的积存放在数组Array[6][14]中),最后积的存放结果如同笔算的梯形。然后将梯形(二维数组)里面存放的数据按列相加,得到的数组每个里面存放的数字不仅仅是一位数,然后按照上图中的加法原则相加。具体实现如下面代码所示:

 public static String dealAdd(int[] nums) {
   
        String ans = (nums[0] % 10)+"";
        int mark = 0;
        
        for (int i = 1; i < nums.length; i++) {
   
            int a = (nums[i] % 10) + (nums[i - 1]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
荣耀java招聘试题是指荣耀公司在招聘java开发工程师时,给出的用于筛选应聘者的编程题。对于应聘者来说,完成这个试题需要展示自己的编程能力和解决问题的能力。 具体的题可能因时间和职位等因素而有所不同,但通常会考察一些与Java语言相关的知识和技能,例如: 1. 算法和数据结构:可能涉及到对数组、链表、栈、队列、树等数据结构的操作,或者一些常见的算法问题,如查找、排序等。 2. 多线程和并发:要求应聘者能够理解和应用Java中的多线程编程,处理多线程同步和互斥的问题,并且能够处理线程间的通信。 3. 数据库操作:可能涉及到对数据库的数据进行增删改查等操作,要求应聘者能够熟练使用SQL语言和Java相关的数据库操作API。 4. 设计模式和面向对象编程:要求应聘者能够使用面向对象的思想设计和编写可复用、可维护、可扩展的代码,具备良好的代码结构和设计模式的应用能力。 在解答这个试题时,应聘者需要展示自己的编程思维和解决问题的能力,包括理解题要求、分析问题、设计解决方案、编写代码、调试测试等环节。 对于应聘者来说,完成这个试题有助于展示自己的实际能力和经验,也是通过面试的一个重要环节。因此,在应聘前,应聘者可以预先准备相关的知识和技能,并多练习类似的编程题,以提高自己的编程水平和应试能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值