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有序,返回你能不能做到。的主要内容,如果未能解决你的问题,请参考以下文章

2022-12-08:给定n棵树,和两个长度为n的数组a和b i号棵树的初始重量为a[i],i号树每天的增长重量为b[i] 你每天最多能砍1棵树,这天收益 = 砍的树初始重量 + 砍的树增长到这天的总

看似数学题 (思维)

Acwing800. 数组元素的目标和

使序列递增的最小交换

Ikbal 有两个长度为 N 的数组 a 和 b,最初所有值都为零。

给定两个长度都为N的序列A,B,在A和B中各取一个数相加可以得到N^2个和,从小到大输出这N^2个和中最小的N个