![2022-01-02:给定两个数组A和B,长度都是N, A[i]不可以在A中和其他数交换,只可以选择和B[i]交换(0<=i<n), 你的目的是让A有序,返回你能不能做到。,第1张 2022-01-02:给定两个数组A和B,长度都是N, A[i]不可以在A中和其他数交换,只可以选择和B[i]交换(0<=i<n), 你的目的是让A有序,返回你能不能做到。,第1张](/aiimages/2022-01-02%EF%BC%9A%E7%BB%99%E5%AE%9A%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84A%E5%92%8CB%EF%BC%8C%E9%95%BF%E5%BA%A6%E9%83%BD%E6%98%AFN%EF%BC%8C+A%5Bi%5D%E4%B8%8D%E5%8F%AF%E4%BB%A5%E5%9C%A8A%E4%B8%AD%E5%92%8C%E5%85%B6%E4%BB%96%E6%95%B0%E4%BA%A4%E6%8D%A2%EF%BC%8C%E5%8F%AA%E5%8F%AF%E4%BB%A5%E9%80%89%E6%8B%A9%E5%92%8CB%5Bi%5D%E4%BA%A4%E6%8D%A2%280%EF%BC%9C%3Di%EF%BC%9Cn%29%EF%BC%8C+%E4%BD%A0%E7%9A%84%E7%9B%AE%E7%9A%84%E6%98%AF%E8%AE%A9A%E6%9C%89%E5%BA%8F%EF%BC%8C%E8%BF%94%E5%9B%9E%E4%BD%A0%E8%83%BD%E4%B8%8D%E8%83%BD%E5%81%9A%E5%88%B0%E3%80%82.png)
2022-01-02:给定两个数组A和B,长度都是N,
A[i]不可以在A中和其他数交换,只可以选择和B[i]交换(0<=i
答案2022-01-02:
自然智慧,递归。从左往右,两种选择,选A[i]或者B[i]。
代码用golang编写。代码如下:
package main
import (
"fmt"
"math"
)
func main() {
A := []int{3, 2, 2}
B := []int{1, 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代码
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)