• 笔试面试相关记录(13)


    (1)一个链表,当一个结点为偶数,且它前面的结点为奇数时,将这个节点合并到前面的结点中,一直执行这个操作,知道没有满足条件的结点时。

    输入如下:{2,3,4,1,2,2,3}

    输出:{2,7,5,3}

    解释:4合并到3上,变为{2,7,1,2,2,3},2合并到1上,变成{2,7,3,2,3},2合并到3上,变成{2,7,5,3}

    1. class Solution {
    2. public:
    3. /**
    4. * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
    5. *
    6. *
    7. * @param head ListNode类
    8. * @return ListNode类
    9. */
    10. ListNode* mergeNode(ListNode* head) {
    11. // write code here
    12. if (head == nullptr) return head;
    13. ListNode* cur = head->next;
    14. ListNode* pre = head;
    15. while(cur) {
    16. if (cur->val % 2 == 0 && pre->val % 2 == 1) {
    17. pre->val = pre->val + cur->val;
    18. pre->next = cur->next;
    19. delete cur;
    20. cur = pre->next;
    21. } else {
    22. pre = pre->next;
    23. cur = cur->next;
    24. }
    25. }
    26. return head;
    27. }
    28. };

    (2)一个链表,每次选择一个节点x_t,删除掉x_{t-1}x_tx_{t+1}三个结点,如果有结点不存在,则不删除,一直对链表执行此操作,问要使得链表为空,需要的操作次数的期望值?

    解释:如果链表只有一个结点,则只执行一次删除就变为空,操作次数期望为1

    如果链表有两个节点,则选中任意一个,都会变为空,操作期望为1

    如果链表为三个结点,则选中第一个,还剩最右边一个,还需一次操作,选中中间,只需一次,选中最右边的,还剩最左边的一个,期望值为1/3 * 2 + 1/3 * 1 + 1/3 * 2 = 1.66666667

    如果链表为四个,则期望为1/4*2 + 1/4*2 + 1/4*2 +1/4*2 = 2

    1. class Solution {
    2. public:
    3. /**
    4. * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
    5. *
    6. *
    7. * @param n int整型
    8. * @return double浮点型
    9. */
    10. double get_expect(int n) {
    11. // write code here
    12. vector<double> dp(5, 0);
    13. dp[1] = 1;
    14. dp[2] = 1;
    15. dp[3] = 1.66666667;
    16. dp[4] = 2;
    17. if(n<=4) return dp[n];
    18. for (int i = 5; i <= n; i++) {
    19. // 选择了两遍的情况有2种,每种的概率为1/i,操作次数为剩下的操作次数dp[3]+1
    20. double num1 = 2.0/i * (dp[3] + 1);
    21. // 选择了非两边的情况,double(i-2)/i
    22. double num2 = double(i-2)/i * (dp[2] + 1);
    23. double total = num1 + num2;
    24. // dp[2], dp[3], dp[4] 分别用来记录之前已经计算过的值,然后依次迭代
    25. dp[2] = dp[3];
    26. dp[3] = dp[4];
    27. dp[4] = total;
    28. }
    29. return dp[4];
    30. }
    31. };

  • 相关阅读:
    AI编程助手 Amazon CodeWhisperer 全面解析与实践
    畅享高性能计算!天翼云HPC解决方案来了
    LeetCode·每日一题·828.统计子串中的唯一字符·数学
    【微服务】六. Nacos配置管理
    php生成xml数据
    tiktok ERP系统功能介绍
    autoshop梯形图谁写一下,不知道怎么完成这个
    6、链表和数组,哪个实现队列更快?
    靶场上新:PigCMS任意文件上传漏洞
    五大模型看深度学习用于时序预测的最新进展
  • 原文地址:https://blog.csdn.net/wj617906617/article/details/134233740