首页 > 其他分享 >第 406 场周赛

第 406 场周赛

时间:2024-07-15 17:07:43浏览次数:6  
标签:周赛 ListNode val nums int res next 406

100352. 交换后字典序最小的字符串

枚举交换的位置

class Solution {
public:
    string getSmallestString(string s) {
        string res = s;
        for (int i = 1; i < s.size(); i++) {
            if (((s[i] - '0') % 2) == ((s[i - 1] - '0') % 2)) {
                swap(s[i], s[i - 1]);
                res = min(res, s);
                swap(s[i], s[i - 1]);
            }
        }
        return res;
    }
};

100368. 从链表中移除在数组中存在的节点

题目其实还是简单的,但是不熟悉面向对象的知识,加没有手写过链表导致各种 RE

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* nHead = new ListNode(-1);

    ListNode* modifiedList(vector<int>& nums, ListNode* head) {
        ListNode * lst = nHead;

        sort(nums.begin(), nums.end());
        for(auto it = head; it != nullptr; it = it -> next){
            int x = it -> val;
            auto pos = lower_bound(nums.begin(), nums.end(), x);
            if( pos != nums.end() and *pos == x) continue;
            lst -> next = new ListNode(x);
            lst = lst -> next;
        }
        nHead = nHead -> next;
        return nHead;
    }
};

其实我是知道,对于这种操作用带头结点的单链表很好实现。但是这个不带头确实不好处理。

学习了一下大佬的写法,感觉还是要学习一次现代 C++的规范了。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* modifiedList(vector<int>& nums, ListNode* head) {
        unordered_set<int> st(nums.begin(), nums.end());
        ListNode dummy(0, head);
        ListNode *it = &dummy;
        while(it -> next != nullptr) {
            auto nxt = it -> next;
            if(st.contains(nxt -> val)) {
                it -> next = nxt -> next;
                delete nxt;
            }else {
                it = nxt;
            }
        }
        return dummy.next;
    }
};

100361. 切蛋糕的最小总开销 I/100367. 切蛋糕的最小总开销 II

按照代价对线进行排序。

class Solution {
public:
    long long minimumCost(int m, int n, vector<int>& horizontalCut, vector<int>& verticalCut) {
        vector<pair<long long,int>> a;
        for(auto i : horizontalCut)
            a.emplace_back(i, 0);
        for(auto i : verticalCut)
            a.emplace_back(i, 1);      
        vector<long long> cnt(2 , 1);
        ranges::sort(a, greater<>());
        long long res = 0;
        for(auto &[val , t] : a)
            res += val * cnt[t] , cnt[t ^ 1]  ++;
        return res;
    }
};

标签:周赛,ListNode,val,nums,int,res,next,406
From: https://www.cnblogs.com/PHarr/p/18303531

相关文章

  • SP4063 MPIGS - Sell Pigs / P4638 [SHOI2011] 银行家题解
    考虑使用网络流。建立源点\(S\)和汇点\(T\)。每个人作为一个点,将它们与汇点\(T\)连接,权值为需要的猪的数量。然后对于每个人,如果和之前的某个人开了相同的猪圈,那么就将之前的那个人的点与这个人的点连接。如果猪圈还没有被开过,就从源点\(S\)连接这个点,权值为猪圈猪的初......
  • leetcode周赛 - 406
    100352.交换后字典序最小的字符串给你一个仅由数字组成的字符串 s,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的字典序最小的字符串。如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5和9、2和4奇偶性相同,而6和9奇偶性不......
  • 牛客周赛 Round 51
    A.小红的同余思路+解法:找到唯一一个x满足2x%m=1(0<=x<m)  就可以推出(m+1)*2即可Code: #include<bits/stdc++.h>usingnamespacestd;intmain(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);intm;cin>>m;......
  • 2024/7/14 每日一题 + 周赛P3/P4
    807.保持城市天际线问题描述给你一座由nxn个街区组成的城市,每个街区都包含一座立方体建筑。给你一个下标从0开始的nxn整数矩阵grid,其中grid[r][c]表示坐落于r行c列的建筑物的高度。城市的天际线是从远处观察城市时,所有建筑物形成的外部轮廓。从东、南......
  • [20240618]Oracle C functions annotations.txt
    [20240618]OracleCfunctionsannotations.txt--//网站orafun.info可以查询oraclecfunctions.CreatedbyFritsHooglandwithalittlehelpfromKamilStawiarski.--//可以通过它了解oracle内部C函数.实际上可以直接下载相关文件,在本地使用.https://gitlab.com/FritsHoog......
  • 【单片机毕业设计选题24061】-基于蓝牙的单片机通信系统
    系统功能:1、本系统硬件由两块STM32单片机,DHT11,光敏传感器,12864oled和HC-05蓝牙模块组成。2、单片机1+HC-05蓝牙模块做为主机,单片机2+HC-05蓝牙模块做为从机。3、单片机从机将采集到温湿度,光照强度等信息通过蓝牙发送给主机。主要功能模块原理图:电源时钟烧录接口:单......
  • Exam20240629 赛后结
    Exam20240629赛后结T1想法几乎是对的,结果两个不能直接乘起来就是如果你不太冷静的话就容易做出错误的判断,我考虑了这个问题,居然认为直接乘起来是可以的emmT2不太熟悉容斥,想到前缀和之后扔了结果它这个时候就已经变成slime和npc了这个时候就只需要钦定一段是大于k的其......
  • 牛客周赛 Round50 E-小红的树上移动 (期望dp+逆元)
    E-小红的树上移动题目:题意:在一个树上从根节点移动,每次都会向更深的下一层走,如果此时已经是叶子节点没有下一层就会停留在这里。求出移动次数的期望,移动次数就是从根节点1开始到此节点的深度。思路:画一个草图不难看出其实在同一层中,到达每个点的概率是一样的。并且,对于每一层......
  • 第 405 场周赛
    3210.找出加密后的字符串classSolution{public:stringgetEncryptedString(strings,intk){intn=s.size();stringt=s;for(inti=0;i<n;i++)t[i]=s[(i+k)%n];returnt;}};3211.......
  • 牛客周赛 Round 50 D[小红的因式分解] 超级无敌大暴力
    牛客周赛Round50D小红的因式分解超级无敌大暴力首先拿到这个题,真的是一头雾水,本蒟蒻今天才想出来。。。首先拆开式子,我们可以得到a1a2==a;a1b2+a2b1==b;b1b2==c;那么,我们只需要求解一对a1与b1即可得到本题答案,因为剩下的一对a2b2由a/a1和b/b1得到所以我们可以运用......