First, some housekeeping: Look back at the code you've posted. I'm not sure what you see, but I see unusual characters replacing important code bits. The forum's software is interpreting some of the characters as special codes that tell it to display strange stuff. Avoid this by putting your code in code tags - use the "#" button.
And 3 high and 2 low for 2? Sweet, if that is it.
I thought you had it there.
Would it be easier to just rewire?
Your call. Do you just want to make this one work, or do you want to learn how to make this kind of stuff work?
... how does the code address each led? Does it start at 2 and 6 and increment both equally one at a time?
No. Work your way through it: i starts at 2, j starts at i+1 = 3; then j goes to 4, then 5, then 6. i goes to 3; j starts at 4, goes to 5, then 6. And so on. Looks like you're not entirely clear on how a loop works.
int NLEDS[20] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
int LEDArray = sizeof(NLEDS)/sizeof(int);
I'm baffled by this. The array is nothing but a sequential list of indexes, and those indexes are really nothing more than the names you gave the LEDs - they're not connected to anything in the circuiting. The int is just 20, but you don't learn anything from it - you already told NLEDS to be 20 elements in size.
digitalWrite(LEDArray[1],HIGH);
Here's what's wrong with this: LEDArray is an int, not an array. I'm thinking that this code didn't compile - is that right?
How would you like to proceed? We can post code that will give you the result you want, or we can help you work through it. My instincts say that you're unfamiliar with C, and with programming in general. Maybe we'd serve you best by getting this one working, and letting you get on with learning the language; maybe you'd prefer to work through this as a learning experience. How would you like to proceed?