Dynamically change albedo or diffuse map in custom material

Hi
Have a client demo where I need to change the albedo or diffuse map in a custom material during runtime. This code sample from documentation is what I need but

-each gameObject has 2 different materials. How do I target the correct one?
-how would I create the necessary texture array from say, 4 different bitmaps in my Project folder?
Sorry, not thinking clearly after an all nighter:(

// Change renderer's texture each changeInterval/
// seconds from the texture array defined in the inspector.

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
public Texture[] textures;
public float changeInterval = 0.33F;
public Renderer rend;

void Start() {
rend = GetComponent<Renderer>();
}

void Update() {
if (textures.Length == 0)
return;

int index = Mathf.FloorToInt(Time.time / changeInterval);
index = index % textures.Length;
rend.material.mainTexture = textures[index];
}
}

For getting the right material you can call them by name:
rend.materials

  Renderer rend = GetComponent<Renderer>();
        foreach(Material mat in rend.materials) {
            if(mat.name == "MyMaterial") {
                //Do something
            }
        }

Thanks, appreciated!