6.现有两个数组:{ 1, 2, 3, 4, 5, 6, 7, 8, 9,15 },{ 2, 1, 4, 6, 10, 12, 15, 17,9 }, 要求找出两个数组中相同并且最大的一个值,
时间: 2023-11-08 08:05:28 浏览: 39
可以使用两个for循环遍历两个数组,将相同的元素存储到一个新的数组中,然后对新数组进行排序,取出最大值即可。代码如下所示(Java语言):
```java
public class Demo2 {
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 15};
int[] b = {2, 1, 4, 6, 10, 12, 15, 17, 9};
int[] c = new int[Math.min(a.length, b.length)];
int index = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++) {
if (a[i] == b[j]) {
c[index++] = a[i];
}
}
}
Arrays.sort(c);
System.out.println("两个数组中相同并且最大的一个值为:" + c[c.length - 1]);
}
}
```
相关问题
现有两个递增有序的数组A和B,将两个数组合并为数组C且递增排列。 数组A:1,7,9,11,13,15,17,19 数组B:2,4,6,8,10 合并后数组C:1,2,4,6,7,8,9,10,11,13,15,17,19
可以使用双指针法来合并两个有序数组。具体实现如下:
```python
def merge(nums1, nums2):
i, j, k = 0, 0, 0
merged = [0] * (len(nums1) + len(nums2))
while i < len(nums1) and j < len(nums2):
if nums1[i] < nums2[j]:
merged[k] = nums1[i]
i += 1
else:
merged[k] = nums2[j]
j += 1
k += 1
while i < len(nums1):
merged[k] = nums1[i]
i += 1
k += 1
while j < len(nums2):
merged[k] = nums2[j]
j += 1
k += 1
return merged
```
上面的代码中,我们使用了三个指针,`i`和`j`分别指向两个数组的起始位置,`k`指向合并后数组的起始位置。我们比较`nums1[i]`和`nums2[j]`的大小,将较小的数添加到`merged`数组中,并将对应指针向后移动一位。重复该过程直到有一个数组的所有元素都加入到`merged`数组中,最后将剩余元素直接加入到`merged`数组中即可。
js现有两个有序数组 [1, 2, 5, 9, 10]、[3, 4, 6, 9, 10],请通过js来寻找这两个有序数组最小相同元素。
可以使用双指针法来解决这个问题。我们可以分别定义两个指针 `i` 和 `j` 分别指向两个数组的开头,然后逐个比较两个指针所指向的元素,如果相等则返回该元素,如果不相等则将指向元素较小的指针向后移动一位,直到找到相等的元素或者其中一个指针到达数组末尾为止。
下面是实现代码:
```javascript
function findMinCommonNum(arr1, arr2) {
let i = 0, j = 0;
while (i < arr1.length && j < arr2.length) {
if (arr1[i] === arr2[j]) {
return arr1[i];
} else if (arr1[i] < arr2[j]) {
i++;
} else {
j++;
}
}
return null;
}
const arr1 = [1, 2, 5, 9, 10];
const arr2 = [3, 4, 6, 9, 10];
console.log(findMinCommonNum(arr1, arr2)); // 输出 9
```
在上述代码中,我们首先定义了两个指针 `i` 和 `j`,然后在 while 循环中逐个比较两个指针所指向的元素。如果两个元素相等,则返回该元素;否则,将指向元素较小的指针向后移动一位。如果其中一个指针到达数组末尾,则跳出循环并返回 null。最终,如果找到了相同的元素,则返回该元素的值,否则返回 null。