Skip to content
Advertisement

Using queue to rearrange every other integer

I’m trying to figure out how to take in an integer and rearrange them so that every alternating character is saved (So the [1, 2, 3, 4, 5, 6] would return [1, 4, 2, 5, 3, 6]). I think a queue would be the best to use for this problem so here’s what I have so far. It returns [3, 1, 4, 5, 2, 6], but I’m not sure how I can get it to return the alternating form above :

import java.util.*;
public class everyOtherInteger {
public static void main(String[] args) {

    Queue <Integer> sort = new LinkedList<Integer>();
    String s = "123456";    

    for (int i = 0; i < s.length(); i++) {
        sort.add(Integer.parseInt(s.charAt(i) + ""));

        if (i%2 == 0) {
            int a = sort.remove();
            sort.add(a);
        }
        else {

        }
    }
    
    System.out.println(sort);
}

}

Advertisement

Answer

Just build the list differently. No queue required.

You can add half the numbers at the start, the add the rest in-between each.

List<Integer> nums = new ArrayList<>();

Scanner sc = new Scanner(System.in);
int limit = sc.nextInt(); // 6
int value = 1;
for (int i = 0; i < limit / 2; i++) {
  nums.add(value++);
}
for (int i = 1; i < limit; i+=2) {
  nums.add(i, value++);
}
System.out.println(nums); // [1, 4, 2, 5, 3, 6]
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement