2558. 从数量最多的堆取走礼物

题意

给一组数字,每秒都选择最大的一个,留下其平方根

用 最大堆就行

code

class Solution {
public long pickGifts(int[] g, int k) {
long ans = 0;
PriorityQueue<Integer> pq = new PriorityQueue<>((a, b) -> (-(a - b)));
for (int i = 0; i < g.length; i++) {
ans += g[i];
pq.add(g[i]);
}
while (pq.size() > 0 && k-- > 0) {
int t = pq.poll();
int a = (int) Math.sqrt(t);
t -= a;
ans -= t;
// System.out.println(a + " " + t);
pq.add(a);
} return ans;
}
}

2559. 统计范围内的元音字符串数

题意

给一个字符串数组,和 [ l, r ],求数组中下标在 [ l, r ] 范围内的字符串中,以元音字母 aeiou 作为开头和结尾的字符串数量

前缀和

求字符串数组的前缀和即可

code

class Solution {
// 前缀和
public int[] vowelStrings(String[] w, int[][] q) {
int n = w.length;
boolean[] vis = new boolean[26];
vis[0] = true; vis[4] = true; vis[8] = true; vis[14] = true; vis[20] = true;
int[] s = new int[n + 5];
for (int i = 0; i < n; i++) {
int t = 0;
int a = w[i].length();
if (vis[w[i].charAt(0) - 'a'] && vis[w[i].charAt(a - 1) - 'a']) t = 1;
s[i + 1] = s[i] + t;
}
ArrayList<Integer> ans = new ArrayList<>();
for (var t : q) {
int a = s[t[1] + 1] - s[t[0]];
ans.add(a);
}
int[] a = new int[ans.size()];
for (int i = 0; i < ans.size(); i++) {
a[i] = ans.get(i);
}
return a;
}
}

2560. 打家劫舍 IV

题意

一排连续的房屋,偷钱,

  1. 不能偷相邻的房子
  2. 最少要偷 k 间房子。

    问:

    偷钱能力:这一次偷的所有的房子中,最大的金额

    满足以上两个条件的情况下,小偷的 最小偷钱能力是多少

求 最大值中的最小值,考虑二分求答案

求出数组中金额的 max 和 min,作为二分的区间

如果当前的 max 满足 check,则 >= max 都满足,向 < max 二分

用 check 函数作为二分的判断

求 check 函数时,当前房子金额 <= x && 隔壁没被偷过,就满足情况,贪心求,尽可能多偷,最后判断是否至少偷了 k 个房子即可。

有没有可能得到不在数组中的数

不可能

设 x 是二分到的不在数组中的数,它满足条件,y 是数组中小于 x 的最大的数

我们的条件是 [ 当前房子金额 <= x ] ,如果 x 满足条件,则 y 偷的房子是和 x 一样多的,最终会回归到数组中的数

code

class Solution {
// check函数作为二分的条件,是 dp / 贪心
// 题目是 求最小的最大值,用二分来搜索答案
public int minCapability(int[] nums, int k) {
int mx = nums[0], mn = nums[0]; // 存储最大最小值,用于二分
for (var i : nums) {
mx = Math.max(mx, i);
mn = Math.min(mn, i);
} int l = mn, r = mx;
while (l < r) {
int mid = l + r >> 1;
if (check(nums, mid, k)) r = mid;
else l = mid + 1;
} return l;
} private boolean check(int[] a, int x, int k) { // 设最大的金额是 x,最少盗取 k 户
int ans = 0; // 盗取的房子数量
for (int i = 0, j = -2; i < a.length; i++) {
if (a[i] <= x && j + 1 < i) {
ans++;
j = i;
}
}
return ans >= k;
}
}

LeetCode_单周赛_331的更多相关文章

  1. 算法5: LeetCode_单链表_两数相加

    题目: * 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. * 请你将两个数相加,并以相同形式返回一个表示和的链表. * 你可 ...

  2. Leetcode 第133场周赛解题报告

    今天参加了leetcode的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看 ...

  3. 【Leetcode周赛】从contest-111开始。(一般是10个contest写一篇文章)

    Contest 111 (题号941-944)(2019年1月19日,补充题解,主要是943题) 链接:https://leetcode.com/contest/weekly-contest-111 ...

  4. H5单页面手势滑屏切换原理

    H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 1.实现原理 ...

  5. 快速构建H5单页面切换骨架

    在Web App和Hybrid App横行的时代,为了拥有更好的用户体验,单页面应用顺势而生,单页面应用简称`SPA`,即Single Page Application,就是只有一个HTML页面的应用 ...

  6. ASP.NET Aries 入门开发教程9:业务表单的开发

    前言: 经过前面那么多篇的列表的介绍,终于到了大伙期待的表单开发了. 也是本系列的最后一篇文章了! 1:表单页面的权限设置与继承 对于表单页面,权限的设置有两种: 1:你可以选择添加菜单(设置为不显示 ...

  7. 【CSS进阶】伪元素的妙用--单标签之美

    最近在研读 <CSS SECRET>(CSS揭秘)这本大作,对 CSS 有了更深层次的理解,折腾了下面这个项目: CSS3奇思妙想 -- Demo (请用 Chrome 浏览器打开,非常值 ...

  8. bootstrap + requireJS+ director+ knockout + web API = 一个时髦的单页程序

    也许单页程序(Single Page Application)并不是什么时髦的玩意,像Gmail在很早之前就已经在使用这种模式.通常的说法是它通过避免页面刷新大大提高了网站的响应性,像操作桌面应用程序 ...

  9. 探索ASP.NET MVC5系列之~~~3.视图篇(下)---包含常用表单和暴力解猜防御

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  10. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

随机推荐

  1. 云实例初始化工具cloud-init源码分析

    源码分析 代码结构 cloud-init的代码结构如下: cloud-init ├── bash_completion # bash自动补全文件 │   └── cloud-init ├── Chan ...

  2. 😀 Java并发 - (并发基础)

    Java并发 - (并发基础) 1.什么是共享资源 堆是被所有线程共享的一块内存区域.在虚拟机启动时创建.此内存区域的唯一目的就是存放对象实例 Java中几乎所有的对象实例都在这里分配内存.方法区与堆 ...

  3. 深度学习之logistics回归

    在开始之前,事先声明本文参考[中文][吴恩达课后编程作业]Course 1 - 神经网络和深度学习 - 第二周作业_何宽的博客-CSDN博客_吴恩达课后编程作业 加上自己的理解,希望可以不用重复看吴恩 ...

  4. 图神经网络之预训练大模型结合:ERNIESage在链接预测任务应用

    1.ERNIESage运行实例介绍(1.8x版本) 本项目原链接:https://aistudio.baidu.com/aistudio/projectdetail/5097085?contribut ...

  5. day25 前端

    https://www.dcloud.io/hbuilderx.html 下载HbuilderX,直接解压缩双击打开 html5 <!DOCTYPE html><!-- 文档类型,声 ...

  6. 关于Qt的QPixmap中不支持jpg文件格式的问题

    问题 Qt部分版本存在不支持jpg,JPEG等图像格式的问题 qDebug()<<QImageWriter::supportedImageFormats(); 这行代码可以查看所支持的图像 ...

  7. 一文带你搞懂 Google 发布的新开源项目 GUAC

    随着软件供应链攻击的显著增加,以及 Log4j 漏洞带来的灾难性后果和影响,软件供应链面临的风险已经成为网络安全生态系统共同关注的最重要话题之一.根据业内权威机构 Sonatype 发布的2022软件 ...

  8. MySQL基础知识(二)-超详细 Linux安装MySQL5.7完整版教程及遇到的坑

    1.简介 我们经常会在Linux上安装MySQL数据库,但是安装的时候总是会这里错,那里错,不顺利,今天整理了一下安装流程,连续安装来了两遍,没有遇到什么大错误,基本上十分钟左右可以搞定,教程如下.写 ...

  9. linux安装influxdb和chronograf

    安装环境: Alibaba Cloud Linux 安装influxdb 1.下载.安装 wget https://dl.influxdata.com/influxdb/releases/influx ...

  10. 史上最小 x86 Linux 模拟器「GitHub 热点速览 v.22.50」

    本周 GitHub Trending 略显冷清,大概是国内的人们开始在养病,而国外的人们开始过圣诞.元旦双节.热度不减的 ChatGPT 依旧占据了本周大半的 GitHub 热点项目,不过本周的特推和 ...