9.1 蚂蚁集团大安全二面加试编程

第一题:k个一组反转链表

这里我用的递归完成的,我认为我这种写法是这题最好理解的写法
ListNode* reverseKGroup(ListNode* head, int k) {
    // write code here
    ListNode* newHead = nullptr;
    ListNode* cur = head;
    //先检查前k个元素是否非空
    for (int i = 0; i < k; i++) {
        if (cur == nullptr) {
            return head;
        }
        cur = cur->next;
    }
    //递归处理k + 1之后的部分
    newHead = reverseKGroup(cur, k);
    //头插法
    cur = head;
    for (int i = 0; i < k; i++) {
        ListNode* temp = cur;
        cur = cur->next;
        temp->next = newHead;
        newHead = temp;
    }
    return newHead;
}
第二题,一种加密方式是使用一个数组K,每次加密,对应位置的数都会移动到K对应位置值作为下标的位置,求count次加密后的数组

这题我当场就暴力平方复杂度做完了


后面发现这题可以还有讨论的空间,比如加密多少次会循环一下,和同学讨论了可以用状态机,或者图,循环周期是所有循环联通单元的最小公倍数。

#蚂蚁金服##蚂蚁集团##笔经#
全部评论
最后因为我的流程不在这个部门,所以转部门申请要我足够优秀且想去才能走内部通道,简历一个被卡在一个部门卡了一个月不面试,导致我阿里的投递直接作废,这点还是感觉有点尴尬的,每次面阿里流程都僵硬的很。。。
点赞 回复 分享
发布于 2021-09-18 21:29

相关推荐

评论
点赞
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务