代码编织梦想

第 100 场双周赛

这场偏简单,前面有点思维。

赛时源代码,没任何优化。

Q1 思维

当时刚洗完澡,还蒙的。写了半天判断,越来越乱,后来干脆就暴力了。暴力还wa2.

class Solution {
   public:
    int distMoney(int money, int children) {
        if (money < children) return -1;
        if (money == children) return 0;
        money -= children;
        vector<int> res(50, 0);
        for (int i = 0; i < children; i++) res[i] += 1;
        int i = 0;
        while (money >= 7) {
            money -= 7;
            res[i++] += 7;
            if(i>=children) {
                i=children-1;
            }
        }
        if (money > 0) res[i] += money;

        int cnt = 0;
        for (int j = 0; j < children; j++) {
            if (res[j] == 8) cnt++;
        }
        if(res[i]==4&&i==children-1) return max(0,cnt-1);
        return cnt;
    }
};

Q2 思维+贪心

排序后的答案和原数组一样。

贪心,每个数都找第一个比它大的。

class Solution {
   public:
    int maximizeGreatness(vector<int>& nums) {
        int n = nums.size();
        sort(nums.begin(), nums.end());
        int i=0;
        for(auto&x:nums){
            if(x>nums[i]){
                i+=1;
            }
        }
        return i;
    }
};

Q3 优先队列

每次都找最小的数,同时用一个数组标记。显然是优先队列,最多出队 n 次。

class Solution {
   public:
    long long findScore(vector<int>& nums) {
        priority_queue<pair<int, int>,vector<pair<int,int> >,greater<pair<int,int>> >q;

        for (int i = 0; i < nums.size(); i++) {
            q.push({nums[i], i});
        }

        long long ans = 0;
        vector<int> vis(nums.size(), 0);
        while (!q.empty()) {
            auto p = q.top();
            q.pop();
            int val = p.first;
            int idx = p.second;

            if (!vis[idx]) {
                ans += val, vis[idx] = 1;
                // printf("%d \n",val);
                if (idx - 1 >= 0) vis[idx - 1] = 1;
                if (idx + 1 < nums.size()) vis[idx + 1] = 1;
            }
        }

        cout << ans << endl;

        return ans;
    }
};

Q4 二分

经典了,只是计算的方式略微有一点点新。

class Solution {
public:
    typedef long long ll;
    long long repairCars(vector<int>& ranks, int cars) {
        int n = ranks.size();
        ll l=0,r=1e18;
        while(l<r){
            ll mid = (l+r)>>1;
            ll cnt = 0;
            for(int i=0;i<n;i++){
                cnt += (int)sqrt(mid/ranks[i]);
            }
            if(cnt>=cars) r = mid;
            else l = mid+1;
        }
        return l;
    }
};

总结:前面两题思维wa的有点多,说明确实自己没思维。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_51009975/article/details/129645638

leetcode第二场双周赛_fakenews的博客-爱代码爱编程

1085. 最小元素各数位之和 给你一个正整数的数组 A。 然后计算 S,使其等于数组 A 当中最小的那个元素各个数位上数字之和。 最后,假如 S 所得计算结果是 奇数 的请你返回 0,否则请返回 1。 示例 1: 输入:[34,23,1,24,75,33,54,8] 输出:0 解释: 最小元素为 1,该元素各个数位上的数字之和

leetcode第 8 场双周赛-爱代码爱编程

1180. 统计只含单一字母的子串 给你一个字符串 S,返回只含 单一字母 的子串个数。 示例 1: 输入: "aaaba" 输出: 8 解释: 只含单一字母的子串分别是 "aaa", "aa", "a", "b"。 "aaa" 出现 1 次。 "aa" 出现 2 次。 "a" 出现 4 次。 "b" 出现 1 次。 所以答案是 1 +

LeetCode第 26 场双周赛-爱代码爱编程

5396. 连续字符 题目难度Easy 给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。 请你返回字符串的能量。 示例 1: 输入:s = “leetcode” 输出:2 解释:子字符串 “ee” 长度为 2 ,只包含字符 ‘e’ 。 示例 2: 输入:s = “abbcccddddeeeeedcba” 输出

LeetCode第 34 场双周赛-爱代码爱编程

5491. 矩阵对角线元素的和 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1: 输入:mat = [[1,2,3], [4,5,6], [7,8,9]] 输出:25 解释:对角线的和为:1 + 5 + 9 + 3 + 7 = 25 请注意,元素 mat[1]

Leetcode 第 46 场双周赛 题解-爱代码爱编程

Leetcode 第 46 场双周赛 题解 5657. 唯一元素的和5658. 任意子数组和的绝对值的最大值(前缀和)5659. 删除字符串两端相同字符后的最短长度(双指针)5660. 最多可以参加的会议数目 II(暂时不会,有缘再补...) 5657. 唯一元素的和 题意:给出一个序列,求出这个序列中,所有唯一元素的和 题解:开个map或者

leetcode第 46 场双周赛-爱代码爱编程

题目A https://leetcode-cn.com/problems/longest-nice-substring/ 因为 l e n g

2022-02-05 每日打卡:Leetcode第71场双周赛-爱代码爱编程

2022-02-05 每日打卡:Leetcode第71场双周赛 写在前面 “这些事儿在熟练之后,也许就像喝口水一样平淡,但却能给初学者带来巨大的快乐,我一直觉得,能否始终保持如初学者般的热情、专注,决定了在做某件事时能走多远,能做多好。” 该系列文章由python编写,所刷题目共三个来源:之前没做出来的 ;Leetcode中等,困难难度题目; 周赛题目

「LeetCode」第71场双周赛 题解-爱代码爱编程

碎碎念 由于各种事情比赛开始后十分钟才开始做题,状态也心不在焉 由于最后急着刷排名,心态很急,思路没有整理就上手敲代码 结果只AC了前三题,最后一题实在没心态了 5984. 拆分数位后四位数字的最小和 解题思路 很明显的贪心,对于四位数,用一个长度为4的数组a保存各位的数值 题目要求构成的两个两位数之和最小; 首先对数组a从小到大排序, 两位小的一

【解题报告】力扣 第 75 场双周赛-爱代码爱编程

文章目录 简单题1、算法2、解题报告中等题1、算法2、解题报告中等题1、算法2、解题报告困难题1、算法2、解题报告加群须知 简单题 1、算法   位运算 / 异或 / 位与 / 右移 2、解题报告 LeetCode 6033. 转换数字的最少位翻转次数 中等题 1、算法   模拟 2、解题报告 LeetCode 6034. 数

LeetCode刷题——第 72 场双周赛和第 281 场力扣周赛-爱代码爱编程

第 72 场双周赛和第 281 场力扣周赛 第 72 场双周赛5996. 统计数组中相等且可以被整除的数对5997. 找到和为给定整数的三个连续整数5998. 拆分成最多数目的偶整数之和5999. 统计数组中好三元组数目第 281 场力扣周赛6012. 统计各位数字之和为偶数的整数个数6013. 合并零之间的节点6014. 构造限制重复的字符串60

第 73 场双周赛 总结-爱代码爱编程

第 73 场双周赛 总结 1. 数组中紧跟 key 之后出现最频繁的数字 描述: ​ 给你一个下标从 0 开始的整数数组 nums ,同时给你一个整数 key ,它在 nums 出现过。统计 在 nums 数组中紧跟着 key 后面出现的不同整数 target 的出现次数。换言之,target 的出现次数为满足以下条件的 i 的数目: 0 <

第85场双周赛+307场周赛_圆圆爱跳舞的博客-爱代码爱编程

T1:得到k个黑块的最少涂色次数 给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要么是 ‘W’ 要么是 ‘B’ ,表示第 i 块的颜色。字符 ‘W’ 和 ‘B’ 分别表示白色和黑色。 给

第89场双周赛_小张刷题日记的博客-爱代码爱编程

第 89 场双周赛 - 力扣(LeetCode)https://leetcode.cn/contest/biweekly-contest-89/ 6208. 有效时间的数目-Easy 题目描述: 给你一个长度为 5 的字符串 time ,表示一个电子时钟当前的时间,格式为 "hh:mm" 。最早 可能的时间是 "00:00" ,最晚 可能的时间是 "

leetcode第 91 场双周赛题解_leimingzeouo的博客-爱代码爱编程

目录 2465. 不同的平均值数目2466. 统计构造好字符串的方案数2467. 树上最大得分和路径2468. 根据限制分割消息 2465. 不同的平均值数目 模拟一下即可 class Solution

[leetcode周赛复盘] 第 92 场双周赛20221015_七水shuliang的博客-爱代码爱编程

[LeetCode周赛复盘] 第 92 场双周赛20221015 一、本周周赛总结二、 [Easy] 6249. 分割圆的最少切割次数1. 题目描述2. 思路分析3. 代码实现 三、[Medium] 6277

leetcode 第 76 场双周赛题解及思路_现在我们有 total\textit{total}total 的钱数,一支钢笔的价格为 cost1\-爱代码爱编程

LeetCode 第 76 场双周赛 题解及思路 6060. 找到最接近 0 的数字 6061. 买钢笔和铅笔的方案数 6062. 设计一个 ATM 机器 606

力扣第76场双周赛-爱代码爱编程

第一题:找到最接近0的数字 思路:用一个数表示到0之间的距离 代码: class Solution { public: int findClosestNumber(vector<int>& nums) { int res = -1e7, m = 1e7; //res为数字,m为到0的距离 f

leetcode第95场双周赛_最大化城市的最小供电站数目-爱代码爱编程

2023.1.7LeetCode第95场双周赛 2525. 根据规则将箱子分类 思路 根据题意模拟即可 代码 class Solution { public: string categorizeBox(in