Quick actions

cmd+k|ctrl+k

Navigation

Languages

Udemy: Master Coding Interview - Arrays - #66

Snippet info

Language

Csharp

Visibility

public

Author

jcurrie33

Created

2020-08-02T08:32:01Z

Updated

2020-08-02T08:33:23Z

using System;

class Array {
    
    public int length = 0;
    
    private int size = 1;
    private Object[] data;
    
    static void Main() {
        Array newArray = new Array();
        newArray.push("hi");
        newArray.push("you");
        newArray.push("!");
        //newArray.pop();
        newArray.delete(0);
        newArray.push("are");
        newArray.push("nice");
        newArray.delete(1);
        
        Console.WriteLine("Array contents: " + newArray.toString());
    }
    
    public Array() {
        this.data = new Object[size];
    }
    
    public Object get(int index) {
        return this.data[index];
    }
    
    public void push(Object item) {
        resizeArrayIfNeeded();
        data[length] = item;
        length++;
    }
    
    public Object pop() {
        Object item = this.data[this.length - 1];
        this.length--;
        resizeArrayIfNeeded();
        return item;
    }
    
    public string toString() {
        string output = "{";
        for (int i = 0; i < this.length; i++) {
            if (i > 0) {
                output += ", ";
            }
            output += this.data[i];
        }
        output += "}";
        return output;
    }
    
    public void delete(int index) {
        for (int i = index; i < this.length - 1; i++) {
            this.data[i] = this.data[i+1];
        }
        this.length--;
        resizeArrayIfNeeded();
    }
    
    public void resizeArrayIfNeeded() {
        // Resize array if it is at full capacity
        if (length == size) {
            size *= 2;
            Object[] temp = new Object[size];
            for (int i = 0; i < length; i++) {
                temp[i] = this.data[i];
            }
            this.data = temp;
        }
        // Resize array if it is at less than 1/4 capacity
        if (length < size / 4) {
            size /= 2;
            Object[] temp = new Object[size];
            for (int i = 0; i < length; i++) {
                temp[i] = this.data[i];
            }
            this.data = temp;
        }
    }
}
INFO