Untitled

 avatar
unknown
plain_text
a year ago
2.5 kB
8
Indexable
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
 
class UserSolution {
    String char2String(char[] mName) {
        String s = "";
        for (int i = 0; mName[i] != '\0'; i++) {
            s += mName[i];
        }
        return s;
    }
 
    class Node {
        int idxList;
        int index;
        int value;
        Node head;
        String root;
        String copyOf;
        HashMap<Integer, Integer> values;
        List<String> childs;
 
        Node() {
            values = new HashMap<Integer, Integer>();
            childs = new ArrayList<String>();
        }
 
        Node(int idxList, int index, int value) {
            this.idxList = idxList;
            this.index = index;
            this.value = value;
        }
    }
 
    HashMap<String, Node> map;
    int[][] origin;
    int idxList;
 
    public void init() {
        origin = new int[10][200000];
        map = new HashMap<String, UserSolution.Node>();
        idxList = 0;
    }
 
    public void makeList(char mName[], int mLength, int mListValue[]) {
        String name = char2String(mName);
        Node nNode = new Node(idxList, -1, -1);
 
        for (int i = 0; i < mLength; i++) {
            origin[idxList][i] = mListValue[i];
        }
        map.put(name, nNode);
        idxList++;
    }
 
    public void copyList(char mDest[], char mSrc[], boolean mCopy) {
        String nameDes = char2String(mDest);
        String nameSrc = char2String(mSrc);
 
        Node node = map.get(nameSrc);
        if (mCopy) {
            Node newNode = new Node(node.idxList, -1, -1);
            newNode.head = node.head;
            map.put(nameDes, newNode);
            return;
        }
        map.put(nameDes, node);
        return;
    }
 
    public void updateElement(char mName[], int mIndex, int mValue) {
        String name = char2String(mName);
        Node node = map.get(name);
        Node nNode = new Node(node.idxList, mIndex, mValue);
 
        nNode.head = node.head;
        node.head = nNode;
    }
 
    public int element(char mName[], int mIndex) {
        String name = char2String(mName);
        Node node = map.get(name);
        Node current = node;
        while (node != null) {
            if (node.index == mIndex)
                return node.value;
            node = node.head;
        }
        return origin[current.idxList][mIndex];
    }
}
Editor is loading...
Leave a Comment