【LeetCode每日一题合集】2023.10.23-2023.10.29(简单的一周)

news2024/11/27 6:20:35

文章目录

  • 2678. 老人的数目(简单遍历模拟)
  • 1155. 掷骰子等于目标和的方法数(动态规划)
  • 2698. 求一个整数的惩罚数(预处理+dfs回溯)
  • 2520. 统计能整除数字的位数(简单模拟)
  • 1465. 切割后面积最大的蛋糕(贪心)
  • 2558. 从数量最多的堆取走礼物(优先队列)
  • 274. H 指数(二分查找)
    • 先排序,再二分
    • O(n)计数排序

2678. 老人的数目(简单遍历模拟)

https://leetcode.cn/problems/number-of-senior-citizens/description/?envType=daily-question&envId=2023-10-23

在这里插入图片描述

在这里插入图片描述

class Solution {
    public int countSeniors(String[] details) {
        int ans = 0;
        for (String s: details) {
            int age = (s.charAt(11) - '0') * 10 + s.charAt(12) - '0';
            ans += age > 60? 1: 0;
        }
        return ans;
    }
}

会比下面的代码快一些。

class Solution {
    public int countSeniors(String[] details) {
        int ans = 0;
        for (String detail: details) {
            int age = Integer.parseInt(detail.substring(11, 13));
            ans += age > 60? 1: 0;
        }
        return ans;
    }
}

1155. 掷骰子等于目标和的方法数(动态规划)

https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/description/?envType=daily-question&envId=2023-10-24

在这里插入图片描述
提示:

1 <= n, k <= 30
1 <= target <= 1000

数据范围很小,采用三层循环。

class Solution {
    public int numRollsToTarget(int n, int k, int target) {
        long[][] dp = new long[n + 1][target + 1];
        final long MOD = (long)1e9 + 7;
        dp[0][0] = 1;
        for (int i = 1; i <= n; ++i) {          // 枚举骰子
            for (int j = 1; j <= k; j++) {      // 枚举当前面
                for (int x = 0; x <= target - j; ++x) { // 枚举上个骰子的和
                    dp[i][x + j] = (dp[i][x + j] + dp[i - 1][x]) % MOD;
                }
            }
        }
        return (int)dp[n][target];
    }
}

2698. 求一个整数的惩罚数(预处理+dfs回溯)

https://leetcode.cn/problems/find-the-punishment-number-of-an-integer/description/?envType=daily-question&envId=2023-10-25
在这里插入图片描述

提示:
1 <= n <= 1000

class Solution {
    static int[] ans = new int[1001];
    static int target = 0;
    // 预处理
    static {
        for (int i = 1; i <= 1000; ++i) {
            if (op(i)) {
                ans[i] = ans[i - 1] + i * i;
            } else ans[i] = ans[i - 1];
        }
    }

    public int punishmentNumber(int n) {
        System.out.println(op(1));
        return ans[n];
    }

    // 判断x是否满足条件
    public static boolean op(int x) {
        String s = String.valueOf(x * x);
        target = x;
        return dfs(s, 0, 0);
    }

    public static boolean dfs(String s, int i, int t) {
        if (i == s.length() && t == target) return true;
        if (i >= s.length()) return false;
        boolean res = false;
        for (int j = i + 1; j <= s.length() && !res; ++j) {
            res |= dfs(s, j, t + Integer.parseInt(s.substring(i, j)));
        }
        return res;
    }
}

2520. 统计能整除数字的位数(简单模拟)

https://leetcode.cn/problems/count-the-digits-that-divide-a-number/description/?envType=daily-question&envId=2023-10-26

在这里插入图片描述

提示:
1 <= num <= 10^9
num 的数位中不含 0

class Solution {
    public int countDigits(int num) {
        int t = num, ans = 0;
        while (t != 0) {
            if (num % (t % 10) == 0) ans++;
            t /= 10;
        }
        return ans;
    }
}

1465. 切割后面积最大的蛋糕(贪心)

https://leetcode.cn/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/description/?envType=daily-question&envId=2023-10-27

在这里插入图片描述
在这里插入图片描述

贪心得想,任意两个长和宽都可以组合起来。那么最大面积就是由最大的长和宽组合起来的结果。

class Solution {
    public int maxArea(int h, int w, int[] horizontalCuts, int[] verticalCuts) {
        Arrays.sort(horizontalCuts);
        Arrays.sort(verticalCuts);
        int m = horizontalCuts.length, n = verticalCuts.length;
        int mxH = Math.max(h - horizontalCuts[m - 1], horizontalCuts[0]), mxW = Math.max(w - verticalCuts[n - 1], verticalCuts[0]);
        for (int i = 1; i < m; ++i) mxH = Math.max(mxH, horizontalCuts[i] - horizontalCuts[i - 1]);
        for (int i = 1; i < n; ++i) mxW = Math.max(mxW, verticalCuts[i] - verticalCuts[i - 1]);
        return (int)((long)mxH * mxW % (long)(1e9 + 7));
    }
}

2558. 从数量最多的堆取走礼物(优先队列)

https://leetcode.cn/problems/take-gifts-from-the-richest-pile/description/?envType=daily-question&envId=2023-10-28
在这里插入图片描述

提示:
1 <= gifts.length <= 10^3
1 <= gifts[i] <= 10^9
1 <= k <= 10^3

class Solution {
    public long pickGifts(int[] gifts, int k) {
        long s = 0;
        PriorityQueue<Integer> pq = new PriorityQueue<>((a, b) -> b - a);
        for (int g: gifts) {
            s += g;
            pq.offer(g);
        }
        for (int i = 0 ; i < k; ++i) {
            int v = pq.poll(), x = (int)Math.sqrt(v);
            s -= v - x;
            pq.offer(x);
        }
        return s;
    }
}

274. H 指数(二分查找)

https://leetcode.cn/problems/h-index/description/?envType=daily-question&envId=2023-10-29
在这里插入图片描述

提示:

n == citations.length
1 <= n <= 5000
0 <= citations[i] <= 1000

先排序,再二分

class Solution {
    public int hIndex(int[] citations) {
        Arrays.sort(citations);
        int n = citations.length, l = 0, r = n; // 二分h
        while (l < r) {
            int mid = l + r + 1 >> 1, v = citations[n - mid];
            if (v >= mid) l = mid;
            else r = mid - 1;
        }
        return l;
    }
}

O(n)计数排序

见:https://leetcode.cn/problems/h-index/solutions/869042/h-zhi-shu-by-leetcode-solution-fnhl/

倒序枚举统计引用数量>=i的论文数量。

class Solution {
    public int hIndex(int[] citations) {
        int n = citations.length, tot = 0;
        int[] cnt = new int[n + 1];
        for (int i = 0; i < n; ++i) {
            cnt[Math.min(citations[i], n)]++;
        }
        for (int i = n; i >= 0; --i) {
            tot += cnt[i];
            if (tot >= i) return i;
        }
        return 0;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1146559.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

✨✨✨if __name__ == “__main__“ 在 Python 中意味着什么?

✨✨✨if __name__ "__main__" 在 Python 中意味着什么&#xff1f; 1. 原理2. 总结参考 在阅读其他人的代码时&#xff0c;你可能遇到过 Python 的 if__name__ “main” 习惯用法。这篇博客将了解有关 Python if name “main” 习惯用法的所有信息。 1. 原理 这…

linux 模块安装与卸载

文章目录 模块实现编译模块的 makefile编译报错解决模块编译日志自动化模块安装模块卸载 模块实现 新建 my_module.c 文件 #include <linux/types.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/module.h>static int __ini…

python随手小练8(南农作业题)

题目1: 输入3 门课程 a,b,c 的成绩,求 3 门成绩的总和平均值(整数,四舍五人)以及最高和最低值。如果3门课程考试成绩分别以权重 0.50.3 和0.2计人总评成绩(整数先求总和再四舍五入),则最终总评成绩是多少? 具体操作&#xff1a; a float(input("a:")) b float(in…

基于Java的体育竞赛成绩管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

qt高精度定时器的使用停止线程应用

##线程停止 //线程停止应用 public: explicit WorkerThread(QObject *parent 0) :QThread(parent), m_bStopped(false){qDebug() << "Worker Thread : " << QThread::currentThreadId();}~WorkerThread(){stop();quit();wait();}void stop() {qDebug()…

JEnv使用初体验

Java多版本控制器初体验 1、前言 由于公司项目使用jdk8版本&#xff0c;而日常学习会使用其他版本例如jdk17等&#xff0c;往常都是修改环境配置目录实现。 2、下载资料 链接&#xff1a;https://pan.baidu.com/s/1UqzHv8K8WBu-75Ysyc_h3A 提取码&#xff1a;ra6a 3、安装 …

Java中的类你了解多少(每日一练)

文章目录 类的加载方式类的加载流程类的生命周期加载验证准备解析初始化类的销毁 类加载器有哪些什么是双亲委派模型&#xff1f; 类的加载方式 开发工具可以将java源代码编译为class字节码&#xff0c;类加载器加载class字节码&#xff0c;将字节码中的内容分配到内存中&#…

Go学习第十八章——Gin日志与第三方工具Logrus

Go web框架——Gin日志与第三方工具Logrus Gin日志功能1 基础介绍1.1 快速入门1.2 日志基础使用1.3 将日志输出到文件 2 定义路由格式3 修改日志级别4 修改日志格式 第三方日志工具logrus1 快速入门1.1 安装1.2 使用 2 基本功能使用2.1 设置日志输出格式2.2 设置日志输出位置2.…

TYWZOJ 种树苗 待定题解

文章目录 题目描述输入格式输出格式样例样例输入样例输出 数据范围与提示思路与部分实现完整代码 题目描述 在游戏 Minecraft 中&#xff0c;玩家可以通过种树来使木材再生。玩家需要将树苗种在泥土上&#xff0c;然后等待它长成大树&#xff0c;期间可以利用骨粉来催熟树苗。…

[NSSCTF 2nd] web刷题记录

文章目录 php签到MyBox非预期解预期解 php签到 源代码 <?phpfunction waf($filename){$black_list array("ph", "htaccess", "ini");$ext pathinfo($filename, PATHINFO_EXTENSION);foreach ($black_list as $value) {if (stristr($ext, …

[python 刷题] 974 Subarray Sums Divisible by K

[python 刷题] 974 Subarray Sums Divisible by K 题目如下&#xff1a; Given an integer array nums and an integer k, return the number of non-empty subarrays that have a sum divisible by k. A subarray is a contiguous part of an array. 依旧是 prefix sum 的变种…

EASYX绘制卡通头像

#include <stdio.h> #include <easyx.h> #include <iostream> #include <math.h> #define PI 3.14 // 1PI 180度 2PI 360度int main() {// 创建1024*1024的窗体initgraph(1024, 1024);// 将背景颜色设施为白色setbkcolor(WHITE);cleardevice();// to…

怀旧,20款曾经辉煌至极的PC软件,用过5个你是老网民

博主是1999年接触电脑的&#xff0c;2000年家里有了台式机&#xff0c;然后和众多孩子一样&#xff0c;迷上了这玩意&#xff0c;虽然博主也毫无意外地沉迷游戏&#xff0c;但同时也对早期的电脑硬件、软件技术有过深入研究&#xff0c;比如BIOS、注册表、黑客技术这种东西。今…

Chatgpt网页版根据关键词自动批量写原创文章软件【可多开自动登录切换gpt账号】

Chatgpt网页版根据关键词自动批量写原创文章软件介绍&#xff1a; 1、需要放入GPT账号和密码放入在账号库.txt里&#xff0c;可以放入多组账号密码&#xff0c;账号切换轮流使用。 2、可以自定义回答指令&#xff0c;也可多个回答指令随机切换。 3、可以给关键词加双标题&…

队列(Queue)概念+通过单、双链表来模拟队列+环形队列+OJ面试题(用队列实现栈、用栈实现队列、设计环形队列)

文章目录 队列(Queue)一、 概念1.尾进头出 二、模拟队列1.单链表实现队列1.1 设置结点1.2 入队offer1.3出队 poll1.4 empty方法&#xff0c;peek方法&#xff0c;getUsedSize方法 2.双链表实现队列2.1 创建结点2.2 入队列2.3 出队列2.4 peek、size、isEmpty方法 三、环形队列1.…

基于Java的婚纱摄影网站系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

基于Java的民航售票管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

C++深度优化(DFS)算法的应用:收集所有金币可获得的最大积分

涉及知识点 深度优化(DFS) 记忆化 题目 节点 0 处现有一棵由 n 个节点组成的无向树&#xff0c;节点编号从 0 到 n - 1 。给你一个长度为 n - 1 的二维 整数 数组 edges &#xff0c;其中 edges[i] [ai, bi] 表示在树上的节点 ai 和 bi 之间存在一条边。另给你一个下标从 0…

利用二叉树对表达式求值(只能处理个位的操作数)

题目&#xff1a; 题目要求: 用二叉树来表示表达式&#xff0c;树的每一个节点包括一个运算符和运算数。代数表达式中只包含&#xff0c;-&#xff0c;*&#xff0c;/&#xff0c;&#xff08;&#xff0c;&#xff09;和一位整数且没有错误。按照先括号&#xff0c;再乘除&am…

批量爬取指定多个网址的爱站权重关键词词库(爱站拓词自动去重)

批量爬取指定多个网址的爱站权重关键词词库软件介绍&#xff1a; 1、软件可以设置权重词的长度范围。 2、可设置权重词必须包含词。 3、可以设置爬取的页数。 4、可以设置爬取PC权重词、移动权重词。 5、可以放入多个网站&#xff0c;批量爬取多个网站的权重词。 6、爬取完…