JavaRush /Java блог /Архив info.javarush /Кухня(); Задание N64
terranum
28 уровень
Milan

Кухня(); Задание N64

Статья из группы Архив info.javarush
Кухня(); Задание N64 - 1 Правила [Одномерные массивы] 64. Даны два целочисленные массива. Определить, можно ли в первом из них выбрать такие k идущих подряд элементов Xj, Xj+1, ..., Xk-1, чтобы Xj = Y1, Xj+1 = Y2, ..., Xk-1 = Yk.
Комментарии (10)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Airon Уровень 34
5 октября 2014
public static List<int[]> getAjkInB(int[] a, int[] b) {
        List<int[]> list = new LinkedList<int[]>();
        int n = 0, k = a.length;
        while(n + 1 < k) {           // n + 1 нам не надо искать 1 элемент
            for (int i = 0; i < b.length - (k - 1 - n); i++) {
                int[] temp = Arrays.copyOfRange(a, n, k);
                if(Arrays.equals(temp, Arrays.copyOfRange(b, i, (k - n + i))))
                    list.add(temp);                
            }
            if(n + 1 == --k) {       // n + 1 нам не надо искать 1 элемент
                n++;
                k = a.length;
            }
        }
        return list;
    }

a = [0, 0, 45, -2, 5, 0, 0, -2, 3, 1, -10, 0, 0, 343, 3, 1, 11]
b = [8, 8, 45, -2, 5, 8, 8, -2, 3, 1, -11, 8, 8, 34, 33, 11, 1]
[45, -2, 5]
[45, -2]
[-2, 5]
[-2, 3, 1]
[-2, 3]
[3, 1]
[3, 1]
Voronblack Уровень 17
3 октября 2014
public static boolean checkSequence(int[] arr, int[] arr2, int k)
    {
        boolean result = false;
        int count = 0;

        if (arr.length == 0 || arr2.length == 0 )
            throw new IllegalArgumentException("Bad args");


        for (int i = 0; i < arr.length; i++)
        {
            for (int y : arr2)
                if (arr[i] == y)
                {
                    count++;
                    i++;                    
                    if (count == k)
                    {
                        result = true;
                        break;
                    }
                }
            count = 0;
        }
        return result;
    }
Principious Уровень 9
2 октября 2014
Может быть как-то так?
public static Boolean isTrueIfContains(int[] arr1, int[] arr2)
    {
        String s1 = "";

        for(Integer x : arr1)
            s1 += Integer.toString(x);

        String s2 = "";

        for(Integer x : arr2)
            s2 += Integer.toString(x);

        return s1.contains(s2);
    }
Vash_the_Stampede Уровень 11
2 октября 2014
надо проверить, является ли второй массив частью первого?