LeetCode 1141, 134, 142
目录
- 1141. 查询近30天活跃用户数
- 题目链接
- 表
- 要求
- 知识点
- 思路
- 代码
- 134. 加油站
- 题目链接
- 标签
- 普通版
- 思路
- 代码
- 简化版
- 思路
- 代码
- 142. 环形链表 II
- 题目链接
- 标签
- 思路
- 代码
1141. 查询近30天活跃用户数
题目链接
1141. 查询近30天活跃用户数
表
- 表
Activity
的字段为user_id
,session_id
,activity_date
和activity_type
。
要求
- 编写解决方案,统计截至 2019-07-27(包含2019-07-27),近 30 天的每日活跃用户数(当天只要有一条活动记录,即为活跃用户)。
- 以 任意顺序 返回结果表。
知识点
date_add()
:将日期加上指定时间的函数,第二个参数经常有interval
做前缀,表示间隔。count()
:统计个数的函数。group by
:按某些字段分组。between and
:判断某个值是否在这个闭区间内。num between 20 and 30
相当于num >= 30 && num <= 30
。
思路
本题只是统计在2019-07-27
和它的前29天中每天的用户数,一天当中重复的用户算一条记录。思路很明显了,使用分组函数按天数分组,然后对用户的id使用去重统计,注意,判断条件是日期在2019-07-27
和它的前29天之内。
代码
selectactivity_date day,count(distinct user_id) active_users
fromActivity
whereactivity_date between date_add('2019-07-27', interval -29 day) and '2019-07-27'
group byactivity_date
134. 加油站
题目链接
134. 加油站
标签
贪心 数组
普通版
思路
暴力的思路是:将整个数组都遍历一次,每次都判断能否以当前下标为起始加油站的下标绕环一周。但是这样会超时,因为有一个样例的gas, cost
数组全都是0。
所以得想一个降低时间复杂度的方法,具体的做法就是合理利用之前计算的结果:如果从一个下标i
作为起始加油站无法到达另一个下标i + k
,则说明以i
到i + k
作为起始加油站的情况都无法到达i + k
。
这是因为如果从i
无法到i + k
(且k > 0
),则说明当下标为i + k
时,这次消耗的 比 之前积累的 还多,但是如果i比原来还大,则积累的油量变少了,就更不能到达i + k
了。所以可以跳过中间的无效点,从i + k + 1
处开始进行下一次的判断。当k == 0
时,说明下标为i
的加油站的油量比消耗的少,则从i + 1
处进行下一次的判断,可以将这个分支与上面的分支并起来,即从i + k + 1
处开始进行下一次的判断。
代码
class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {int n = gas.length;int i = 0;while (i < n) { // i是出发时加油站的下标int rest = 0; // rest是目前剩余的总油量int k = 0; // k是经过加油站的个数while (k < n) {int j = (i + k) % n; // j是当前经过加油站的下标rest += gas[j] - cost[j];// 如果剩余的油量比0小,则无法绕环一周,退出循环if (rest < 0) {break;}k++;}// 如果经过的加油站数等于加油站的总数,则返回这个下标if (k == n) {return i;}// 跳过中间无效的点,从i + k + 1处进行下一次的判断i += k + 1;}// 发现无法从任何一个加油站作为起始点绕环一周,返回-1return -1;}
}
简化版
思路
简化版的思想是:如果以start
作为起始加油站的下标并且满足三个条件,那么start
就是题目所求的答案。第一个是以小于start
的值作为起始加油站的下标无法绕环一周,第二个是以start
作为起始加油站的下标可以走到数组的最后一个下标,最后一个是全程的总剩余油量大于等于0(若全程的总剩余油量小于0,则无法绕环一周)。
简化版 更新起始加油站下标 的思路和普通版是一样的,但是它少了很多计算(比如取余的计算,因为简化版不需要真正绕环一周,只需要找到一个下标满足上述的三个条件),这就使得它的耗时比普通版小。
代码
class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {int total = 0; // total是总剩余的油量int rest = 0; // rest是以start作为起始加油站的下标剩余的油量int start = 0; // start是起始加油站的下标for (int i = 0; i < gas.length; i++) {int sub = gas[i] - cost[i];rest += sub;total += sub;// 如果以start作为起始加油站的下标剩余油量小于0,则将start更新到i + 1if (rest < 0) {rest = 0;start = i + 1;}}// 如果总剩余的油量小于0,则说明无法绕环一周;否则唯一解为startreturn total < 0 ? -1 : start;}
}
142. 环形链表 II
题目链接
142. 环形链表 II
标签
哈希表 链表 双指针
思路
这道题可以使用Floyd判圈算法,不知道原理的可以去看这篇文章:算法——Floyd判圈算法。
这里讲一下思路:使用快慢指针fast, slow
,快指针每次走两步fast = fast.next.next
,慢指针每次走一步slow = slow.next
,如果发现fast == null || fast.next == null
,则这个链表没有环;否则两个指针就会相遇,相遇后把慢指针slow
放到链表头部head
处,快指针fast
不动,仍在相遇点,此时让两个指针同速,每次都只走一步fast = fast.next, slow = slow.next
,直到发生第二次相遇,第二次相遇点就是环的入口。
代码
public class Solution {public ListNode detectCycle(ListNode head) {ListNode fast = head;ListNode slow = head;while (fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;if (fast == slow) {slow = head;while (slow != fast) {fast = fast.next;slow = slow.next;}return slow;}}return null;}
}
相关文章:
LeetCode 1141, 134, 142
目录 1141. 查询近30天活跃用户数题目链接表要求知识点思路代码 134. 加油站题目链接标签普通版思路代码 简化版思路代码 142. 环形链表 II题目链接标签思路代码 1141. 查询近30天活跃用户数 题目链接 1141. 查询近30天活跃用户数 表 表Activity的字段为user_id,…...
华为FPGA工程师面试题
FPGA工程师面试会涉及多个方面,包括基础知识、项目经验、编程能力、硬件调试和分析等。以下是一些必问的面试题: 基础知识题: 请解释FPGA的基本组成和工作原理。描述FPGA中的可编程互联资源以及它们在构建复杂数字电路中的作用。请解释嵌入式多用途块(如BRAM、DSP slices、…...
Windows11上安装docker(WSL2后端)和使用docker安装MySQL和达梦数据库
Windows11上安装docker(WSL2后端)和使用docker安装MySQL和达梦数据库 1. 操作系统环境2. 首先安装wsl2.1 关于wsl2.2 安装wsl2.3 查看可用的wsl2.4 安装ubuntu-22.042.5 查看、启动ubuntu-22.04应用2.6 上面安装开了daili2.7 wsl的更多参考 3. 下载Docke…...
UnityXR Interactable Toolkit如何实现Climb爬梯子
前言 在VR中,通常会有一些交互需要我们做爬梯子,爬墙的操作,之前用VRTK3时,里面是还有这个Demo的,最近看XRI,发现也除了一个爬的示例,今天我们就来讲解一下 如何在Unity中使用XR Interaction Toolkit实现爬行(Climb)操作 环境配置 步骤 1:设置XR环境 确保你的Uni…...
sqli-labs 靶场 less-11~14 第十一关、第十二关、第十三关、第十四关详解:联合注入、错误注入
SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它,我们可以学习如何识别和利用不同类型的SQL注入漏洞,并了解如何修复和防范这些漏洞。Less 11 SQLI DUMB SERIES-11判断注入点 尝试在用户名这个字段实施注入,且试出SQL语句闭合方式为单…...
国内外网络安全现状分析
一、国内网络安全现状 1.1 国内网络安全威胁 国内的网络安全威胁主要表现在以下几个方面: 恶意软件:包括计算机病毒、蠕虫、木马和间谍软件等,它们能感染计算机系统、窃取敏感信息或破坏系统功能。网络钓鱼:通过伪装成可信任的…...
vscode copilot git commit 生成效果太差,用其他模型替换
问题 众所周知,copilot git commit 就像在随机生成 git commit 这种较为复杂的内容还是交给大模型做比较合适 方法 刚好,gitlens 最近开发了 AI commit的功能,其提供配置url api可以实现自定义模型 gitlens 只有3种模型可用:…...
计算机毕业设计hadoop+spark+hive舆情分析系统 微博数据分析可视化大屏 微博情感分析 微博爬虫 微博大数据 微博推荐系统 微博预测系统
本 科 毕 业 论 文 论文题目:基于Hadoop的热点舆情数据分析与可视化 姓名: 金泓羽 学号: 20200804050115 导师: 关英 职称&…...
【MySQL】(基础篇二) —— MySQL初始用
MySQL初始用 目录 MySQL初始用基本语法约定选择数据库查看数据库和表其它的SHOW 在Navicat中,大部分数据库管理相关的操作都可以通过图形界面完成,这个很简单,大家可以自行探索。虽然Navicat等图形化数据库管理工具为操作和管理数据库提供了非…...
计算机网络 期末复习(谢希仁版本)第4章
路由器:查找转发表,转发分组。 IP网的意义:当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节。如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就…...
如何使用Pandas处理数据?
一、技术难点 Pandas是Python中一个强大的数据处理和分析库,它提供了高效、灵活且易于使用的数据结构,主要用于数据清洗、转换、聚合和可视化等任务。然而,在使用Pandas处理数据时,也会遇到一些技术难点。 数据导入与导出&#…...
Error: spawn xdg-open ENOENT
报错:The CJS build of Vite’s Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details. VITE v5.1.4 ready in 2298 ms ➜ Local: http://localhost:80/ ➜ Network: http://10.0.4.13:80/ ➜…...
写给大数据开发,如何去掌握数据分析
这篇文章源于自己一个大数据开发,天天要做分析的事情,发现数据分析实在高大上很多,写代码和做汇报可真比不了。。。。 文章目录 1. 引言2. 数据分析的重要性2.1 技能对比2.2 业务理解的差距 3. 提升数据分析能力的方向4. 数据分析的系统过程4…...
大数据湖一体化运营管理建设方案(49页PPT)
方案介绍: 本大数据湖一体化运营管理建设方案通过构建统一存储、高效处理、智能分析和安全管控的大数据湖平台,实现了企业数据的集中管理、快速处理和智能分析。该方案具有可扩展性、高性能、智能化、安全性和易用性等特点,能够为企业数字化…...
大模型训练的艺术:从预训练到增强学习的四阶段之旅
文章目录 大模型训练的艺术:从预训练到增强学习的四阶段之旅1. 预训练阶段(Pretraining)2. 监督微调阶段(Supervised Finetuning, SFT)3. 奖励模型训练阶段(Reward Modeling)4. 增强学习微调阶段…...
Linux 网络设置
Linux 网络设置 查看及测试网络查看网络配置测试网络连接 设置网络地址参数使用网络配置命令修改网络配置文件 查看及测试网络 查看及测试网络配置是管理 Linux 网络服务的第一步,本节将学习 Linux 操作系统中的网络查看及测试命令。其中讲解的大多数命令以普通用户权限就可以…...
交易中的群体行为特征和决策模型
本文基于人的行为和心理特征,归纳出交易中群体的行为决策模型,并基于这个模型,分析股价波浪运行背后的逻辑,以及投机情绪的周期变化规律,以此指导交易,分析潜在的风险和机会,寻找并等待高性价比…...
Android14之向build.prop添加属性(二百一十九)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…...
Cargo
Cargo cargo是rust的构建系统和包管理工具,在安装rust的时候就一并安装了cargo。 > cargo --version cargo 1.78.0 (54d8815d0 2024-03-26)使用cargo创建项目 cargo new hello_cargo会生成 src 源码目录Cargo.tomlCargo.lock.gitignore 仓库文件 Cargo.toml…...
大学生如何学习node.js?
1. 学习 JavaScript 基础知识 语法:变量、数据类型、操作符、控制结构(if、switch、loops)。函数:定义、调用、参数、作用域。对象和原型:对象字面量、构造函数、继承。数组:方法(map、filter、…...
速盾:服务器遭受ddos攻击如何防御
DDoS(分布式拒绝服务)攻击是一种常见的网络攻击方式,旨在通过同时向目标服务器发送大量请求,以使其过载并无法正常工作。为了有效防御DDoS攻击,服务器管理员可以采取以下措施: 流量监测和分析:监…...
docker-ce 和 docker-ee介绍版本介绍
1 docker-ce 和 docker-ee介绍版本介绍 •Docker-CE指Docker社区版,由社区维护和提供技术支持,为免费版本,适合个人开发人员和小团队使用。•Docker-EE指Docker企业版,为收费版本,由售后团队和技术团队提供技术支持&am…...
[Java] TDengine时序数据库时间戳(timestamp)字段插入数据的实现方法
👉原文阅读 目录 👉[原文阅读](https://b1ankc-mov.github.io/posts/tdengine_timestamp/) 📘正文开始实体类Mapper接口Controller控制器 📘正文开始 实体类 定义实体类,插入数据分别代表打卡时间、员工id࿰…...
我的mybatis学习笔记之二
第一版学习笔记 1,接口是编程: 原生: Dao > DaoImpl mybatis: Mappper > XXXMapper.xml 2,SqlSession代表和数据库的一次会话:用完必须关闭 3,SqlSession和connection一样是非线程安全的.每次使用都必须去获取新的对象 4,mapper接口没有是一类,但是mybtis会为这个接口生…...
【网络编程开发】11.IO模型 12.IO多路复用
11.IO模型 什么是IO: IO 是 Input/Output 的缩写,指的是输入和输出。在计算机当中,IO 操作通常指将数据从一个设备或文件中读取到计算机内存中,或将内存中的数据写入设备或文件中。这些设备可以包括硬盘驱动器、网卡、键盘、屏幕等。 通常用…...
elementui Menu 二级菜单 min-width修改无效
原因:可能是生成的二级菜单样式里面没有带特定的hash属性 而vue代码里面样式里带了 scoped生成的样式有改样式选择器 从而无法成功选择 解决:让样式可以全局选择 不带属性选择器 单文件组件 CSS 功能 | Vue.js :global(.el-menu--vertical .el-menu--p…...
字符串拼接之char实现
目录 一、前言 二、memcpy函数用法 三、代码实现 一、前言 c中想到字符串拼接,我们都知道可以用c库中std::string的字符串中的简单加法进行拼接。示例: int main() {std::string str1 "hello";std::string str2 "World";std::…...
教育的数字化转型——Kompas.ai如何变革学习体验
引言 在现代教育中,数字化转型逐渐成为提升学习效果的重要手段。随着科技的进步,人工智能(AI)在教育领域的应用越来越广泛。本文将探讨教育数字化转型的发展趋势,并介绍Kompas.ai如何通过AI技术变革学习体验。 教育数…...
域内攻击 ----> DCSync
其实严格意义上来说DCSync这个技术,并不是一种横向得技术,而是更偏向于权限维持吧! 但是其实也是可以用来横向(配合NTLM Realy),如果不牵强说得话! 那么下面,我们就来看看这个DCSyn…...
前端 JS 经典:动态执行 JS
前言:怎么将字符串当代码执行。有 4 中方式实现 eval、setTimeout、创建 script 标签、new Function 1. eval 特点:同步执行,当前作用域 var name "yq"; function exec(string) {var name "yqcoder";eval(string); …...
浙江网站建设/电商平台推广公司
* android.telephony.TelephonyManager类作用:访问设备上的电话通讯服务的信息获取方法:Context.getSystemService(Context.TELEPHONY_SERVICE)获取* GsmCellLocation类作用:封装GSM移动电话的基站信息具体代码实现:// 获取Teleph…...
衡水哪儿专业做网站/搜索风云榜百度
test test 是正则表达式的方法,参数是字符串,返回的是布尔值(true或false),查找对应的字符串是否存在 exec RegExpObject.exec(string) exec是正则表达式的方法,它的参数是字符串,查找并返回当…...
手机网站建设软件有哪些/cps广告联盟
ps:个人学习笔记,视频链接https://www.bilibili.com/video/BV1Y7411d7Ys 参考链接https://blog.csdn.net/bit452/category_10569531.html 文章目录相关知识点线性模型梯度下降1.梯度下降2.随机梯度下降反向传播1.两层神经网络示例2.反向传播计算损失函数对权重偏导P…...
ps网页版在线制作/家庭优化大师
引用:http://www.williamlong.info/archives/3181.html CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停…...
企业靠网站接单/佛山关键词排名效果
由于项目需求需要做一个报表,选择FusionCharts作为工具使用。由于以 前没有接触过报表,网上也没有比较详细的fusionCharts教程,所以决定好好研究FusionCharts,同时做一个比较简单的教程提供参考。 由于能力有限(应届毕业生的菜鸟而…...
怎么下载随申办app/seo关键词优化排名软件
第一期:学生表(学生id,姓名,性别,分数) )student(s_id, name, sex, score)班级表(班级id,班级名称) class(c_id, c_name)学生班级表(班级id,学生i…...