楼主11月14号做的Akuna的OA,跟地里整理的差不多。

1-6:C++基础题。. visit 1point3acres.com for more.

7-9:编程题

7:cut the sticks。用hash map统计有多少种不同的数就可以了。

8:split pixels。给一个24位字符串,每8位代表一个颜色。给了几个颜色,求与其最接近的颜色。如何一样接近,返回ambiguous.

9:is a binaray tree valid. 给出一堆边,叫你判断是不是合法的二叉树。题目定义了几种错误的类型。比如重复边,形成环。。

由于准备的不是很充分,而且只能用C++编程,所以第三题没做完。。。


7 Cut the sticks // 网上搜吧

8 Splitting pixels // 给定一个24位的二进制串 每八位转成r, g, b 跟black(0,0,0), red(255,0,0), green(0,255,0), blue(0,0,255), white(255,255,255) 比较L2 distance. 哪个小就返回哪个颜色.如果有一样小的返回ambiguous

9 Is this a binary tree // 给定一堆父子节点 然后判断能不能成树 输出几种情况 例如有环或其他 没做出来 不是很记得题目了


C++好久没写第二题没写完,第三题倒是画桥OA做过 单纯就是parse strings to build a tree,然后build的过程中检查corner case
和drawbridge的题目一模一样,我记得drawbridge题目地里有截图

就是给一堆node pair,要你build tree,可能有几种错误e1 e2 e3等等,比如说e1是两个root,e2是一个点有三个children之类的,每种错误都有一个优先级,遇到错误的时候直接返回优先级最高的那个。


https://www.hackerrank.com/challenges/cut-the-sticks/problem

int main() {
    int n;
    cin >> n;
    vector<int> nums(n);
    for (int i = 0; i < n; i++) {
        cin >> nums[i];
    }
    while (nums.size() > 0) {
        cout << nums.size() << endl;
        int min = *min_element(nums.begin(), nums.end());
        for (vector<int>::iterator it = nums.begin(); it != nums.end();) {
            if (*it == min) {
                nums.erase(it);
            } else {
                it++;
            }
        }
    }
    return 0;
}

https://stackoverflow.com/questions/36793382/how-to-split-the-binary-string


遍历的时候维护一个Set存放所有遍历过的节点,如果当前节点已经在Set里那么肯定就有环了。

results matching ""

    No results matching ""