-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path1460.通过翻转子数组使两个数组相等.cs
85 lines (84 loc) · 2.06 KB
/
1460.通过翻转子数组使两个数组相等.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
using System;
/*
* @lc app=leetcode.cn id=1460 lang=csharp
*
* [1460] 通过翻转子数组使两个数组相等
*
* https://leetcode.cn/problems/make-two-arrays-equal-by-reversing-sub-arrays/description/
*
* algorithms
* Easy (74.02%)
* Likes: 35
* Dislikes: 0
* Total Accepted: 18.2K
* Total Submissions: 24.6K
* Testcase Example: '[1,2,3,4]\n[2,4,1,3]'
*
* 给你两个长度相同的整数数组 target 和 arr 。每一步中,你可以选择 arr 的任意 非空子数组 并将它翻转。你可以执行此过程任意次。
*
* 如果你能让 arr 变得与 target 相同,返回 True;否则,返回 False 。
*
*
*
* 示例 1:
*
*
* 输入:target = [1,2,3,4], arr = [2,4,1,3]
* 输出:true
* 解释:你可以按照如下步骤使 arr 变成 target:
* 1- 翻转子数组 [2,4,1] ,arr 变成 [1,4,2,3]
* 2- 翻转子数组 [4,2] ,arr 变成 [1,2,4,3]
* 3- 翻转子数组 [4,3] ,arr 变成 [1,2,3,4]
* 上述方法并不是唯一的,还存在多种将 arr 变成 target 的方法。
*
*
* 示例 2:
*
*
* 输入:target = [7], arr = [7]
* 输出:true
* 解释:arr 不需要做任何翻转已经与 target 相等。
*
*
* 示例 3:
*
*
* 输入:target = [3,7,9], arr = [3,7,11]
* 输出:false
* 解释:arr 没有数字 9 ,所以无论如何也无法变成 target 。
*
*
*
*
* 提示:
*
*
* target.length == arr.length
* 1 <= target.length <= 1000
* 1 <= target[i] <= 1000
* 1 <= arr[i] <= 1000
*
*
*/
// @lc code=start
public class Solution {
// 106: 78.57%(96ms) 92.86%(41.5MB);
// 数学归纳法?递归?基于两两交换,能产生任意组合?Yes
public bool CanBeEqual(int[] target, int[] arr) {
if(target.Length != arr.Length){
return false;
}
Array.Sort(target);
Array.Sort(arr);
for(int i = 0; i < arr.Length; ++i){
if(target[i] != arr[i]){
return false;
}
}
return true;
}
}
// @lc code=end
/*
[3,7,9]\n[3,7,11]
*/