C#
C++
Go
Java
Python
JavaScript
public class Solution
{
public static List<int> FindDifference(List<int> nums1, List<int> nums2)
{
List<int> result = new List<int>();
int p1 = 0, p2 = 0;
while (p1 < nums1.Count && p2 < nums2.Count)
{
if (nums1[p1] < nums2[p2])
{
result.Add(nums1[p1]);
p1++;
}
else if (nums1[p1] > nums2[p2])
{
result.Add(nums2[p2]);
p2++;
}
else
{
// Одинаковые элементы пропускаем
p1++;
p2++;
}
}
// Дописываем остаток того массива, который не закончился
result.AddRange(nums1.GetRange(p1, nums1.Count - p1));
result.AddRange(nums2.GetRange(p2, nums2.Count - p2));
return result;
}
}
#include <vector>
using namespace std;
vector<int> findDifference(const vector<int>& nums1, const vector<int>& nums2) {
vector<int> result;
int p1 = 0, p2 = 0;
while (p1 < nums1.size() && p2 < nums2.size()) {
if (nums1[p1] < nums2[p2]) {
result.push_back(nums1[p1]);
p1++;
} else if (nums1[p1] > nums2[p2]) {
result.push_back(nums2[p2]);
p2++;
} else {
// одинаковые элементы пропускаем
p1++;
p2++;
}
}
// дописываем остаток того массива, который не закончился
result.insert(result.end(), nums1.begin() + p1, nums1.end());
result.insert(result.end(), nums2.begin() + p2, nums2.end());
return result;
}
package main
func findDifference(nums1 []int, nums2 []int) []int {
result := make([]int, 0, len(nums1)+len(nums2))
p1, p2 := 0, 0
for p1 < len(nums1) && p2 < len(nums2) {
if nums1[p1] < nums2[p2] {
result = append(result, nums1[p1])
p1++
} else if nums1[p1] > nums2[p2] {
result = append(result, nums2[p2])
p2++
} else {
// одинаковые элементы пропускаем
p1++
p2++
}
}
// дописываем остаток того массива, который не закончился
result = append(result, nums1[p1:]...)
result = append(result, nums2[p2:]...)
return result
}
import java.util.*;
public class Solution {
public List<Integer> findDifference(List<Integer> nums1, List<Integer> nums2) {
List<Integer> result = new ArrayList<>();
int p1 = 0, p2 = 0;
while (p1 < nums1.size() && p2 < nums2.size()) {
if (nums1.get(p1) < nums2.get(p2)) {
result.add(nums1.get(p1));
p1++;
} else if (nums1.get(p1) > nums2.get(p2)) {
result.add(nums2.get(p2));
p2++;
} else {
// одинаковые элементы пропускаем
p1++;
p2++;
}
}
// дописываем остаток того массива, который не закончился
result.addAll(nums1.subList(p1, nums1.size()));
result.addAll(nums2.subList(p2, nums2.size()));
return result;
}
}
from typing import *
def find_difference(nums1: List[int], nums2: List[int]) -> List[int]:
result = []
p1 = 0
p2 = 0
while p1 < len(nums1) and p2 < len(nums2):
if nums1[p1] < nums2[p2]:
result.append(nums1[p1])
p1 += 1
elif nums1[p1] > nums2[p2]:
result.append(nums2[p2])
p2 += 1
else:
# одинаковые элементы пропускаем
p1 += 1
p2 += 1
# дописываем остаток того массива, который не закончился
result.extend(nums1[p1:])
result.extend(nums2[p2:])
return result
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @returns {number[]}
*/
export function findDifference(nums1, nums2) {
const result = [];
let p1 = 0;
let p2 = 0;
while (p1 < nums1.length && p2 < nums2.length) {
if (nums1[p1] < nums2[p2]) {
result.push(nums1[p1]);
p1 += 1;
} else if (nums1[p1] > nums2[p2]) {
result.push(nums2[p2]);
p2 += 1;
} else {
// одинаковые элементы пропускаем
p1 += 1;
p2 += 1;
}
}
// дописываем остаток того массива, который не закончился
result.push(...nums1.slice(p1));
result.push(...nums2.slice(p2));
return result;
}