IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 20211118:力扣第267周周赛(上) -> 正文阅读

[数据结构与算法]20211118:力扣第267周周赛(上)

力扣第267周周赛(上)

题目

    1. 买票需要的时间
      在这里插入图片描述
    1. 反转偶数长度组的节点
      在这里插入图片描述

思路与算法

    1. 买票需要的时间
      处理思路:直接进行模拟即可,找到位置k上的人需要买的票的数量,排在他之前的人至少要买跟他同样数量的票,排在他后面的人至少需要买比他的票少一张的数量。注意后者不要搞错就可以解决这道题了。
    1. 反转偶数长度组的节点
      这道题容易出问题的点在于如果最后剩余的节点数量为偶数,那么不管前面这一组节点是否为偶数,最后一组都要进行翻转,在206题翻转链表的基础上做这道题只需要维护一个偶数还是奇数的位置索引即可完成本题的拼接。还有一种解法是将元素全部打入向量vector,利用vector容器进行处理,这个也是个办法,但是应该不是本题要考察的根本目的,所以不去投这个机。我们就使用链表的本地翻转即可。

代码实现

    1. 买票需要的时间
class Solution {
public:
    int timeRequiredToBuy(vector<int>& tickets, int k) {
        int ans = 0;
        for (int i = 0;i < tickets.size(); ++i) {
            if (i < k) {
                if (tickets[i] <= tickets[k]) {
                    ans += tickets[i];
                } else {
                    ans += tickets[k];
                }
            } else if (i == k) {
                ans += tickets[k];
            } else {
                if (tickets[i] >= tickets[k]) {
                    ans += (tickets[k] - 1);
                } else {
                    ans += tickets[i];
                }
            }
        }
        return ans;
    }
};
    1. 反转偶数长度组的节点
class Solution {
public:
  ListNode* reverseEvenLengthGroups(ListNode* head) {
    ListNode* cur = head, *curHead = head, *preLast = NULL;
    int curLen = 0;
    while (cur) {
      int len = curLen;
      curHead = cur;
      int actualLen = 0;
      while (len && cur->next) {
        cur = cur->next;
        actualLen++;
        len--;
      }
      ListNode* next = cur->next;
      if (actualLen & 1) { 
        cur->next = NULL;
        ListNode* rHead = reverse(curHead);
        curHead->next = next;
        preLast->next = rHead;
        preLast = curHead;
      } else {
        preLast = cur;
      }
      cur = next;
      curLen++;
    }
    return head;
  }

  ListNode* reverse(ListNode* head) {
    ListNode *pre = NULL, *cur = head;
    while (cur) {
      ListNode* tmp = cur->next;
      cur->next = pre;
      pre = cur;
      cur = tmp;
    }
    return pre;
  }
};

写在最后

  1. 这周开始无论多忙周赛必须记录。
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-19 17:52:03  更:2021-11-19 17:53:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:48:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码