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. perl大小写转换函数uc和lc

    $side = uc $attrs[0]; #把attrs[0]转换成大写,然后给side变量赋值. $gender = lc $attrs[1]; #把attrs[1]转换成小写,然后给gender ...

  2. 使用kubeadm方式搭建K8S集群

    使用kubeadm方式搭建K8S集群 kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 这个工具能通过两条指令完成一个kubernetes集群的部署: # 创建一个 Ma ...

  3. 【项目案例】配置小型网络WLAN基本业务示例

    组网需求 如图1-1所示,AC直接与AP连接.现某企业分支机构为了保证工作人员可以随时随地的访问Internet,需要通过部署WLAN基本业务实现移动办公. 具体要求如下: 1.提供名为"t ...

  4. 视觉享受,兼顾人文观感和几何特征的字体「GitHub 热点速览 v.22.46」

    GitHub 上开源的字体不在少数,但是支持汉字以及其他非英文语言的字体少之又少,记得上一个字体还是 霞鹜文楷,本周 B 站知名设计 UP 主开源了的得意黑体在人文观感和几何特征之间找到了美的平衡. ...

  5. C温故补缺(六):C反汇编常用的AT&Tx86语法

    C语言反汇编用到的AT&T x86汇编语法 参考:CSDN1,CSDN2 默认gcc -S汇编出的,以及反汇编出的,都是AT&T x86代码,可以用-masm=intel指定为inte ...

  6. 爬虫之xpath插件下载与安装

    目录 简介: 下载xpath文件 打开chrome浏览器 点击右上角小圆点 更多工具.阔展程序 拖拽xpath插件放到阔展程序 如果失效,再次拖拽 关闭浏览器重新打开 按ctrl+shift+x 出现 ...

  7. web项目的开发--第一天

    如何分析需求.如何设计.编码实现.测试. 用ssm架构实现CRM项目代码编写. CRM项目: 关键是养成好的编程思想和编程习惯. 技术架构 视图层(view): 展示数据,跟用户交互. html,cs ...

  8. 使用Spring Reactor优化推荐流程

    1. 背景 公司有一个推荐系统Rec,这个系统的主要功能是: 向外部系统提供推荐接口 根据请求获取推荐策略 根据推荐策略完成推荐的召回.过滤.打分.排序阶段 Rec作为微服务中的一环,本身不存储召回的 ...

  9. 在CentOS8中安装gitlab

    安装 docker 及 docker-compose centos8 更新源 cd /etc/yum.repos.d/ sed -i 's/mirrorlist/#mirrorlist/g' /etc ...

  10. Linux基础第一章 概述

    第一章 概述 1.1 前言 本章讨论系统的概念,从硬件.操作系统角度更加深刻的理解计算机系统,并快速浏览Linux系统提供的服务. 1.2 系统组成     1.3 操作系统和应用程序 操作系统这个词 ...