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); …...
台州做鞋子网站/合肥网站维护公司
#/usr/bin/env python name input("please input your name:") print(name)运行时出现下面的情况:please input your name:彭春彭春转载于:https://blog.51cto.com/11273036/1867049...
廊坊360推广方案/北京网站优化体验
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XDSXHDYY/article/details/96461576 1.先开启schema与namespace的对应关系 在phoenix中与hbase的命名…...
网站怎么做备案变更/手机端网站优化
文章目录七层是什么?七层代码Entity层U层Facade层B层IDAL层Factory层DAL层七层遇到的问题:1.System.NullReferenceException:未将对象引用设置到对象的实例2.抽象工厂反射(未能加载文件或程序集 “DAL”或它的某一个依赖项。系统找…...
双语网站建设费用/今日微博热搜榜前十名
前段时间写了声通信开源SinVoice。我们发现非常IT利益相关方对声学原理与应用。特别面前的一个开放源码的版本号(SinVoice)在...的基础上。声波的效果、效率方面等方面做了很多优化,达到了商用标准。(参见声通信理论:h…...
综合商城网站程序/图片外链在线生成网址
背景: 需要定时执行任务,不同的情况执行不同的插入语句,所以有 DO $do$ DECLARE tstr VARCHAR(14) : ${time_point}; BEGIN IF TRUE THEN INSERT INTO test SELECT total_check_report_static_all, TO_TIMESTAMP(tstr,YYYYMMddHH24miss), C…...
wordpress网站安全/百度网站官网入口
收稿日期: 2012 年 3 月 基于 MATLAB 的机床主轴结构优化设计 刘红娟宝鸡文理学院 摘要: 介绍了机床主轴的结构,建立了以质量最轻为目标函数的优化模型,运用 MATLAB 优化工具箱中的fmincon 函数对其进行优化设计。通过对已有的机床主轴实例进行优化求解和…...