Мне нужно проверить, есть ли два похожих элемента рядом друг с другом в целочисленном массиве, и вставить значение «2», если оно истинно, и «1», если оно ложно.

Я написал код по этому поводу, но я не понимаю, где мой код идет не так.

Вот написанный мной код:

public class question{
public static void main(String[] args) {
    int[] array = {33,33,44,44,5,6,7};

    for (int i = 0; i < array.length-1; i++) {
        for (int j = i + 1; j < array.length-1; j++) {

            if (array[j] == array[i]) // comparing for similarity
            { 
                int insertPosition = i+2;
                int insertValue = 2;
                insertX(array.length, array, insertValue, insertPosition);
            }
            else{
                 int one = 1;
                 int position
                insertX(array.length, array, one, position);
          }
        }
        System.out.println(Arrays.toString(array));
        
       // The output should be "33,33,2,44,44,2,5,1,6,1,7,1"      
    }
    System.out.println(Arrays.toString(array)); 
}

    public static int[] insertX(int n, int arr[], int x, int pos)
    {
        int i;
        int newarr[] = new int[n + 1];
        // insert the elements from
        // the old array into the new array
        // insert all elements till pos
        // then insert x at pos
        // then insert rest of the elements
        for (i = 0; i < n + 1; i++) {
            if (i < pos - 1)
                newarr[i] = arr[i];
            else if (i == pos - 1)
                newarr[i] = x;
            else
                newarr[i] = arr[i - 1];
        }
        return newarr;
    }
}
-2
Kaarthik 9 Апр 2021 в 06:11

1 ответ

Лучший ответ

Я придумал это:

import java.util.ArrayList;
import java.util.List;

public class question{
    public static void main(String[] args) {
    
        int[] sample = {33,33,44,44,5,6,7};
        List<Integer> newList = new ArrayList<Integer>();
    
        for (int i = 0; i < sample.length - 1; i++) {
        
            newList.add(sample[i]);
        
            if(sample[i] == sample[i + 1]) {
                newList.add(sample[i + 1]);
                newList.add(2);
                i++;
            }else {
                newList.add(1);
            }
        }
    
        //check the last item
        if(newList.get(newList.size() - 1) == 1) {
            newList.add(sample[sample.length - 1]);
            newList.add(1);
        }
            
        System.out.println(newList);
    
        //if you need array
        
        //Integer[] newArray = new Integer[newList.size()];
        //newList.toArray(newArray); // fill the array
        //System.out.println(Arrays.toString(newArray));
    }
}

Вывод: [33, 33, 2, 44, 44, 2, 5, 1, 6, 1, 7, 1].

Это решение действительно только в том случае, если здесь не более пары одинаковых последовательных чисел.

0
Rolandas Dundulis 9 Апр 2021 в 05:35