首页 > 其他分享 >Leetcode每日一题

Leetcode每日一题

时间:2023-12-27 16:25:23浏览次数:39  
标签:10 player1 int 每日 player vector && Leetcode

目录

2023

12月往前的应该就不会补题解了,大概有时间会往前一直补到12/1的题解


12/25

1276. 不浪费原料的汉堡制作方案

题目分析

数学题,解二元一次方程即可
具体过程有$$\left { \begin{array}{c}4x+2y=tomatoSlices\x+y=cheeseSlices \end{array}\right.$$
解得$$\left { \begin{array}{c}y=(4*cheeseSlices-tomatoSlices)/2\x=cheeseSlices-y \end{array}\right.$$
另外,我们还需要判断y是否为整数,否则没法刚好配完

Rust代码
impl Solution {
    pub fn num_of_burgers(t: i32, c: i32) -> Vec<i32> {
        if t >= 2 * c && (t - 2 * c) % 2 == 0 && 4 * c >= t && (4 * c - t) % 2 == 0 { vec![(t - 2 * c) / 2, (4 * c - t) / 2] } else { vec![] }
    }
}
C++代码
class Solution {
public:
    vector<int> numOfBurgers(int t, int c) {
        return (4 * c - t) % 2 || (t - 2 * c) / 2 < 0 || (4 * c - t) / 2 < 0 ? vector<int>{} : vector<int>{(t - 2 * c) / 2, (4 * c - t) / 2};
    }
};

12/26

1349. 参加考试的最大学生数

困难的一道困难题,暂时没有敲出代码,题解里有两种思路,动态规划的代码相对简短,但是时间复杂度到了 \(O(2^n)\) ,这里暂时贴出LightT大佬的将原问题看成二分图最大独立集的思路,大概是到寒假有时间补上代码。
动态规划思路

  1. 每次计算第 i 行取 j 个座位时,前 i 行的最大值
  2. 采用位运算减少判断次数:
    1. 首先假设第 i 行的状态是010010 ,我们将其记为 j
    2. 将其做 左移|右移 运算后,得到 101101 ,其中1的位置不能坐人,这个座位状态我们将其记为 t
    3. 那么 $$dp(i,j)=\max_{s\subseteq j}\lbrace dp(i-1,t)+|s|\rbrace$$
  3. 最后得到前 n 行的最大值

最大二分独立集思路

  1. 同一列上的人座位可以随便坐
  2. 奇数列向源节点 \(s\) 连边,偶数列向汇点 \(t\) 连边
  3. 冲突的奇偶列再连边
  4. 算出最大流(即能抄到答案的座位匹配最大数)
  5. 计算:所有可坐人的座位-最大流(得到的就是不能互相抄答案的最大匹配数

12/27

2660. 保龄球游戏的获胜者

题目分析

模拟计算出总分即可
对于每个计算:
一次遍历,同时判断前两个是否包含 10 ,如果包含,则当前值 *2

Rust代码
impl Solution {
    pub fn is_winner(player1: Vec<i32>, player2: Vec<i32>) -> i32 {
        let sore_sum = |player: &Vec<i32>| -> i32 {
            (0..player.len()).fold(0, |x, i| { //求和
                (x + player[i] * (if i > 0 && player[i - 1] == 10 || i > 1 && player[i - 2] == 10 { 2 } else { 1 })) //当前两个中存在==10时 *2
            })
        };
        match sore_sum(&player1).cmp(&sore_sum(&player2)) {
            std::cmp::Ordering::Equal => 0, //相等返回0
            std::cmp::Ordering::Greater => 1, //player1胜
            std::cmp::Ordering::Less => 2, //player2胜
        }
    }
}
C++代码
class Solution {
public:
    int isWinner(vector<int>& player1, vector<int>& player2) {
        auto f = [](vector<int>& player) { //lambda表达式
            int s = 0;
            for (int i = 0, n = player.size(); i < n; ++i) {
                int k = (i && player[i - 1] == 10) || (i > 1 && player[i - 2] == 10) ? 2 : 1; //判断是否需要 *2
                s += k * player[i];
            }
            return s;
        };
        int a = f(player1), b = f(player2); //计算
        return a > b ? 1 : (b > a ? 2 : 0);
    }
};
持续更新ing……

标签:10,player1,int,每日,player,vector,&&,Leetcode
From: https://www.cnblogs.com/Allergy/p/17930782.html

相关文章

  • map|动态规划|单调栈|LeetCode975:奇偶跳
    作者推荐【贪心算法】【中位贪心】.执行操作使频率分数最大涉及知识点单调栈动态规划map题目给定一个整数数组A,你可以从某一起始索引出发,跳跃一定次数。在你跳跃的过程中,第1、3、5…次跳跃称为奇数跳跃,而第2、4、6…次跳跃称为偶数跳跃。你可以按以下方式从索引i向后跳转......
  • 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.12.27)
    一、百度网盘SVIP超级会员共享账号可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答。我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免了U盘的物理载体,直接在网上就实现文件传输。百度网盘SVIP会员可以让自己百度账......
  • 【动态规划】leetcode 不同路径问题
    题目名称:63.不同路径II链接:https://leetcode.cn/problems/unique-paths-ii/description/题目内容:一个机器人位于一个 mxn 网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。......
  • 12/26每日总结
    数据处理sorted(set())-->set的意思是将其提取成随机不重复序列,用于提取较多label时使用leave_labels=sorted(set(train_data['label']))zip将两个长度相同的可迭代对象一一对应返回元组dict将元组打包成字典class_to_num=dict(zip(leaves_labels,range(n_classes)))最后反......
  • 每日总结12.26
    今天完成了软件构造的大作业任务一:基于Jfinal构建信息管理系统,要求包含用户管理,翻译业务模块管理,图片优化模块管理用户管理: 翻译业务模块管理: 图片优化管理:任务二:要求不同用户登录后可进行文字翻译和图片优化业务处理,并且可查看提交业务处理结果,时间,处理列表,图形汇总等......
  • 12.26每日总结1
    今天早上进行了大数据的课堂测试,做完测试后接着做了试验七实验7Spark初级编程实践 1.实验目的(1)掌握使用Spark访问本地文件和HDFS文件的方法(2)掌握Spark应用程序的编写、编译和运行方法2.实验平台(1)操作系统:Ubuntu18.04(或Ubuntu16.04);(2)Spark版本:2.4.0;(3)Hadoop版本:3.1.3。3.......
  • 12.26每日总结2
    今天下午做了软件企业文化实验大作业公司文化  1.1 公司文化概述我们公司一直坚持以人为本、合作创新、追求卓越的企业文化,这些理念已经深深地融入公司的生产经营之中,成为公司发展的重要动力和核心竞争力。作为软件公司,我们明白员工是最重要的资产,因此我们始终尊重和关爱员......
  • 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.12.26)
    合集-网盘(20) 1.百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.17)11-182.记录一次自己写的百度网盘不限速下载脚本11-183.百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.20)11-214.百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.21)11-215.百度网......
  • leetcode 1633. 各赛事的用户注册率
    https://leetcode.cn/problems/percentage-of-users-attended-a-contest/?envType=study-plan-v2&envId=sql-free-50聚合函数分组后计算的是一组内的数据,分组前我们认为所有数据是一组本题注意还需要嵌套语句selectcontest_id,round(count(user_id)/(selectcoun......
  • 【LeetCode】131. 分割回文串
    题目给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回s所有可能的分割方案。回文串是正着读和反着读都一样的字符串。示例1:输入:s="aab"输出:[["a","a","b"],["aa","b"]]示例2:输入:s="a"输出:[["a"]]提示:1<......