arrays.copyofrange用法
时间: 2023-04-12 21:03:35 浏览: 71
`Arrays.copyOfRange`是Java中的一个数组拷贝方法,可以将一个数组中的一部分拷贝到一个新数组中。它的用法如下:
```
int[] original = new int[] {1, 2, 3, 4, 5};
int[] copied = Arrays.copyOfRange(original, start, end);
```
其中,`original`是要拷贝的源数组,`start`是拷贝的起始位置(包含),`end`是拷贝的结束位置(不包含)。
相关问题
Arrays.copyOfRange的用法
Arrays.copyOfRange方法是Java中的一个数组工具方法,用于将数组中的一部分复制到一个新的数组中。具体用法如下:
```java
public static <T> T[] copyOfRange(T[] original, int from, int to)
```
其中,`original`是要被复制的原始数组,`from`是原始数组中要复制的起始位置的索引(包括该位置),`to`是原始数组中要复制的结束位置的索引(不包括该位置)。
这个方法返回一个新的数组,其中包含原始数组中从`from`到`to-1`位置的元素。新数组的长度等于`to - from`。
下面是一个示例代码:
```java
int[] arr = {1, 2, 3, 4, 5};
int[] newArr = Arrays.copyOfRange(arr, 1, 4); // 从索引1到索引3,不包括4
System.out.println(Arrays.toString(newArr)); // 输出 [2, 3, 4]
```
注意:这个方法只能用于复制原始类型数组和对象类型数组,不能用于复制基本数据类型数组(例如int[]、double[]等)。如果要复制基本数据类型数组,可以使用Arrays类中的其他方法,例如Arrays.copyOf方法。
import java.util.Arrays; public class Create { public TreeNode CreateTree(int[] preorder,int[] inorder) { if (preorder.length == 0 || inorder.length == 0) { return null; //前序 中序 长度都为0 返回空 } TreeNode root = new TreeNode(preorder[0]);//从前序中获取根节点。 int rootIndex = 0; //获取根节点在中序遍历中的位置 for (int i = 0; i < inorder.length; i++) { if (root.val == inorder[i]) { rootIndex = i; } } int[] Inorderleft = Arrays.copyOfRange(inorder, 0, rootIndex);//把中序遍历从根节点拆开左右两部分 这是左部分 int[] Inorderright = Arrays.copyOfRange(inorder, rootIndex + 1, inorder.length);//把中序遍历从根节点拆开 右部分 int[] Preorderleft= Arrays.copyOfRange(preorder,0,rootIndex);//把先序遍历已根节点 int[] Preorderright=Arrays.copyOfRange(preorder,rootIndex+1,preorder.length); root.left=CreateTree(Preorderleft,Inorderleft); root.right=CreateTree(Preorderright,Inorderright); return root; } }
这段代码定义了一个名为`Create`的类,并且包含了一个名为`CreateTree`的方法。该方法用于根据给定的前序遍历数组`preorder`和中序遍历数组`inorder`创建一棵二叉树。
方法首先进行了一些判断,如果前序遍历数组或中序遍历数组的长度为0,则说明没有节点可供创建,直接返回空。
接下来,方法创建了一个根节点`root`,其值为前序遍历数组的第一个元素`preorder[0]`。
然后,通过遍历中序遍历数组,找到根节点在其中的位置`rootIndex`。
接着,使用`Arrays.copyOfRange()`方法将中序遍历数组分成两部分,左部分为`Inorderleft`(从0到`rootIndex-1`),右部分为`Inorderright`(从`rootIndex+1`到数组末尾)。
同样地,使用`Arrays.copyOfRange()`方法将前序遍历数组也分成两部分,左部分为`Preorderleft`(从0到`rootIndex-1`),右部分为`Preorderright`(从`rootIndex+1`到数组末尾)。
接下来,通过递归调用`CreateTree()`方法,分别以左子树的前序遍历数组和中序遍历数组创建左子树,并以右子树的前序遍历数组和中序遍历数组创建右子树。
最后,将左子树和右子树分别赋值给根节点的`left`和`right`属性,并返回根节点`root`。
这样就完成了根据前序遍历和中序遍历数组创建二叉树的操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)