拼多多提前批(7月28号笔试题

      看到昨天同学拼多多的笔试题,今天试着写了写,因为自己并没有参加过笔试,写出来的只是我自己能想到的测试用例都过了的,如果有错误,欢迎各位大神指出,仅仅是提供一个解题的想法。而且因为自己基本功不够,写出的程序基本事件复杂度都比较高,也欢迎大神提出优化改进的方法。

  1. 给定两个数组A和B。其中数组A是几乎严格升序排列的,几乎的定义是只需改变其中一个数,即可满足完全升序排列。
    你的任务是从数组A中找到这个数字,并从数组B中选取一个数将其替换,使得数组A是完全严格升序排列的。(严 格升序排列,即不允许相邻两个为相同的数)
    请找出数组B中满足要求的最大数字,并输出最终有序的数组。如果不存在就输出NO. 
    输入描述:
          
    共两行,第一行是数组A,第二行是数组B,元素之间用空格分隔(数组A的长度,数组B的长度< 100)
    输出描述:
           共一行,为最终有序的数组。不存在则输出NO
    示例1

输入

1       3       7       4       10

2      1       5       8       9

输出:

1      3       7       9       0

输入:

20     1       23

50      26     7

输出:

NO

 

         解题思路:这个的解题思路的重点在于改变A[index]和A[index-1]都有可能组成一个升序数组,其中index是定位到的A[index]<A[index-1]的位置。有一点值得注意,改变A[index]如果有值的话肯定会大于A[index-1],只有在A[index]没有符合要求值的情况才会考虑A[index-1],可以减少时间。

import java.util.Scanner;
public class First {
   
public static void main(String ars[]){
        Scanner scanner=
new Scanner(System.in);
       
int[] arrA = parseInts(scanner.nextLine().split(" "));
       
int[] arrB = parseInts(scanner.nextLine().split(" "));

       
int res[]=changeToSort(arrA,arrB);
       
if(res==null){
            System.
out.println("No");
        }
else{
           
for(int r:res){
                System.
out.print(r+" ");
            }
        }

    }

   
public static int[] changeToSort(int A[],int B[]){
       
if(A==null||B==null||A.length==0||B.length==0

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值