2022-01-02:给定两个数组A和B,长度都是N, A[i]不可以在A中和其他数交换,只可以选择和B[i]交换(0<=i<n), 你的目的是让A有序,返回你能不能做到。

Posted 福大大架构师每日一题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-01-02:给定两个数组A和B,长度都是N, A[i]不可以在A中和其他数交换,只可以选择和B[i]交换(0<=i<n), 你的目的是让A有序,返回你能不能做到。相关的知识,希望对你有一定的参考价值。

2022-01-02:给定两个数组A和B,长度都是N,
A[i]不可以在A中和其他数交换,只可以选择和B[i]交换(0<=i<n),
你的目的是让A有序,返回你能不能做到。

答案2022-01-02:

自然智慧,递归。从左往右,两种选择,选A[i]或者B[i]。

代码用golang编写。代码如下:

package main

import (
    "fmt"
    "math"
)

func main() 
    A := []int3, 2, 2
    B := []int1, 4, 3
    ret := letASorted(A, B)
    fmt.Println(ret)


func letASorted(A, B []int) bool 
    return process(A, B, 0, math.MinInt64)


// 当前推进到了i位置,对于A和B都是i位置
// A[i]前一个数字,lastA
// 能否通过题意中的操作,A[i] B[i] 让A整体有序
func process(A, B []int, i, lastA int) bool 
    if i == len(A) 
        return true
    
    // 第一种选择 : A[i]不和B[i]交换
    if A[i] >= lastA && process(A, B, i+1, A[i]) 
        return true
    
    // 第一种选择 : A[i]和B[i]交换
    if B[i] >= lastA && process(A, B, i+1, B[i]) 
        return true
    
    return false

执行结果如下:


左神java代码

以上是关于2022-01-02:给定两个数组A和B,长度都是N, A[i]不可以在A中和其他数交换,只可以选择和B[i]交换(0<=i<n), 你的目的是让A有序,返回你能不能做到。的主要内容,如果未能解决你的问题,请参考以下文章