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 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【力扣周赛】第78场双周赛,T1=暴力遍历,T2=前缀后缀和, T3=区间滑动窗口 -> 正文阅读

[数据结构与算法]【力扣周赛】第78场双周赛,T1=暴力遍历,T2=前缀后缀和, T3=区间滑动窗口

T1子串暴力遍历

5299. 找到一个数字的 K 美丽值

题目:

在这里插入图片描述

思路

一看数据量 num < 109 相当于字符串长度最长为10。直接暴力穷举所有长度为k的子串。然后转成数字尝试整除num即可

java代码

    public int divisorSubstrings(int num, int k) {
        int ret = 0;
        String s = String.valueOf(num);
        for (int i = 0; i <= s.length() - k; i++) {
            String tem = s.substring(i, i + k);
            int cur = Integer.parseInt(tem);
             //System.out.println(cur);
            if(cur != 0 && num % cur == 0) ret++;
        }
        return ret;
    }

T2前缀和

6067. 分割数组的方案数

题目

在这里插入图片描述

思路

数据量105 , 所有最多O(n)时间复杂度。
O(n)保存前缀、后缀和,一次遍历直接获取前 i + 1 个元素和 和 剩余元素和,然后比较累加即可。
注意: 凡是遇到反复加和或相乘的,必须用long来存储,否则很容易溢出。

Java代码

    public int waysToSplitArray(int[] nums) {
        int n = nums.length;
        long[] preSum = new long[n];
        long[] offSum = new long[n];
        long pre = 0, off = 0;
        for (int i = 0; i < nums.length; i++) {
            pre += nums[i];
            preSum[i] = pre;
            offSum[n - i - 1] = off;
            off += nums[n - i - 1];
        }
        int ret = 0;
        for (int i = 0; i < n - 1; i++) {
            if(preSum[i] < offSum[i]) ret++;
        }
        return n - 1 - ret;
    }

T3 区间的滑动窗口

6068. 毯子覆盖的最多白色砖块数

题目

在这里插入图片描述

思路

周赛没做出来,饶了很久怎么写都不对,5555, 学习大佬方法。发现是滑动窗口,我会滑动窗口,但是没有做过这种区间的滑动窗口。一定要多见各种题型

数据量是 5 * 104 , 时间复杂度不能超过O(nlogn)
先给区间二维数组排个序O(nlogn)。
以每个区间为开头,找到最多覆盖的瓷砖数。返回最大的即可。
最多覆盖的瓷砖数可以由能完全覆盖的区间 + 最后不完全覆盖的区间得一部分。
能完全覆盖得区间和之和起始位置由关, 避免反复计算,引入前缀和思想

代码

    public int maximumWhiteTiles(int[][] tiles, int carpetLen) {
        Arrays.sort(tiles, (q, w) -> q[0] - w[0]);
        int n = tiles.length;
        long ret = 0;
        long preSum = 0, curSum = 0;
        int r = 0;
        for (int i = 0; i < n; i++) {
            //把完整能包括的先加进去。 curSum是从0到r的所有区间和,preSum 是[0,i - 1]的所有区间和
            while (r < n && tiles[r][1] - tiles[i][0] + 1 <= carpetLen) {
                curSum += tiles[r][1] - tiles[r][0] + 1; 
                r++;
            }
            if(r == n) { //所有的都能完整加进去
                ret = Math.max(ret, curSum - preSum);
            }else {
                //最后一个看能不能加点
                ret = Math.max(ret, curSum - preSum + Math.max(0, tiles[i][0] + carpetLen - tiles[r][0]));
            }
            preSum += tiles[i][1] - tiles[i][0] + 1;
        }
        return (int)ret;
    }

T4

暂时不追求,只求A3题

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:54:13  更:2022-05-18 17:54:40 
 
开发: 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年5日历 -2024/5/18 7:51:12-

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