提前批面试记录bd

  1. 项目的特色、项目用到的开源库(技术选型)、为什么项目要这么设计(对项目的思考)
  2. 操作系统内存管理 进程地址空间
  3. 哈希表时间复杂度 怎么实现哈希表
  4. 哈希表扩容
  5. LRU页面置换算法
  6. k个结点反转链表 讲讲思路
  7. 读过什么源码

暂时就想起来这些

总结:项目要熟练、基础要扎实、手撕要逻辑清晰


#include <iostream>
#include <memory>
using namespace std;


struct ListNode {
    int val;
    ListNode* next;
    ListNode(int v): val(v), next(nullptr) {}
};

class Solution {
public:
    ListNode* reverseKGroup(ListNode* head, int k) {
        if (head == nullptr) {
            return head;
        }
        ListNode *tmp = head;
        int cnt = 0;
        while (tmp->next != nullptr && cnt < k - 1) {
            tmp = tmp->next;
            ++cnt;
        }
        if (cnt < k - 1) {
            return head;
        }
        ListNode *nextHead = reverseKGroup(tmp->next, k);
        tmp->next = nullptr;
        ListNode *newHead = reverse(head);
        tmp = newHead;
        while (tmp->next != nullptr) {
            tmp = tmp->next;
        }
        tmp->next = nextHead;
        return newHead;
    }

    ListNode* reverse(ListNode *root) {
        if (root == nullptr || root->next == nullptr) {
            return root;
        }
        ListNode *res = reverse(root->next);
        root->next = nullptr;
        ListNode *tmp = res;
        while (tmp->next != nullptr) {
            tmp = tmp->next;
        }
        tmp->next = root;
        return res;
    }
};

int main() {

    int k;
    cin >> k;
    int v;
    ListNode *head = new ListNode(-1);
    ListNode* tmp = head;
    while (cin >> v) {
        if (v == 0) {
            break;
        }
        tmp->next = new ListNode(v);
        tmp = tmp->next;
    }

    Solution s;
    ListNode *res = s.reverseKGroup(head->next, k);
    tmp = res;
    while (tmp != nullptr) {
        cout << tmp->val << " ";
        tmp = tmp->next;
    }
    // delete
    while (head) {
        tmp = head;
        head = head->next;
        delete tmp;
    }
    return 0;
}

用上面代码跑为什么会把输入都输出一遍 如下

全部评论

相关推荐

认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
06-11 15:52
东南大学 C++
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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