LeetCode 1193, 45, 48

目录

  • 1193. 每月交易 I
    • 题目链接
    • 要求
    • 知识点
    • 思路
    • 代码
  • 45. 跳跃游戏 II
    • 题目链接
    • 标签
    • 思路
    • 代码
  • 48. 旋转图像
    • 题目链接
    • 标签
    • 要求
    • 思路
    • 代码

1193. 每月交易 I

题目链接

1193. 每月交易 I

  • Transactions的字段为idcountrystateamounttrans_date

要求

  • 编写一个 sql 查询来查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额。
  • 任意顺序 返回结果表。

知识点

  1. date_format():将日期按照指定的格式返回。例如date_format('2020-01-12', '%Y-%m')表示将日2020-01-122020-01的格式返回。
  2. group by:根据字段的值进行分组,后面可以跟多个字段
  3. conut():统计个数的函数。要注意的一个点是count(0)的结果不一定是0,它与count(*)的结果相同
  4. sum():求和的函数。
  5. if:根据条件返回不同的值。要注意的一个点是判断两个值是否相等的表达式只需要写一个等号,例如num = 3表示判断num是否等于3。

思路

题目要求找到每个月、每个国家/地区的数据,所以要按照月份month和国家的名字country进行分组,然后统计事务数、对金额进行求和、统计批准的(state = 'approved')事务数、对批准的事务的金额进行求和。

代码

selectdate_format(trans_date, '%Y-%m') month,country,count(*) trans_count,count(if(state = 'approved', 1, null)) approved_count, # 注意:null 不能写成0sum(amount) trans_total_amount,sum(if(state = 'approved', amount, 0)) approved_total_amount
fromTransactions
group bymonth,country

45. 跳跃游戏 II

题目链接

45. 跳跃游戏 II

标签

贪心 数组 动态规划

思路

本题可以使用贪心的思想,要想跳的次数最小,就每步都尽可能跳得远一点,但这道题没有这么简单,要求深刻理解无法贪心的情况——局部最优解的总和不是全局最优解
但是每步都跳得最远不一定就会得到最小跳跃次数,例如对于这个数组nums = [3, 4, 1, 1, 1, 1],如果按照每步都跳得最远,那么第一步就是从下标为0的位置跳到下标为3的位置,然后再跳2次就到终点了,共跳了3次。显然对于这样的数组有更优解——第一步从下标为0的位置跳到下标为1的位置,第二步从下标为1的位置跳到下标为5的位置,共跳了2次。这就是贪心的错误用法,要使用贪心就得每次选择都是局部最优解,然后合起来才是全剧最优解。不过可以通过改变贪心的策略,从而得到全局最优解。
先思考为什么不能每次都选择局部最优解,答案是太着急了,考虑得不周全,比如说没有考虑到跳1个下标的情况。所以我们需要使用两个变量来记录能够跳跃的最远下标farAble和上一个能够跳跃的最远下标farEd,遍历整个数组(实际上不需要遍历最后一个值,因为如果已经跳到最后一个值的位置了,就已经满足条件了),每次都需要更新能够跳跃的最远值farAble,然后只有在 当前下标 = 上一个能够跳跃的最远下标farEd 时,才将 上一个能够跳跃的最远下标farEd 更新为 能够跳跃的最远下标farAble,并且让跳跃步数加一,直到跳跃到最后一个下标。
解释一下为什么 跳跃的最小步数steps 恰好等于 上一个能够跳跃的最远下标farEd 的改变次数:因为每次改变farEd都意味着找到了这个局部和下一个局部联合的最优解,也就是说够冷静了,该跳了。这样以此类推,找到的就是全局的最优解。

代码

class Solution {public int jump(int[] nums) {int farEd = 0; // 上一个能够跳跃的最远下标int farAble = 0; // 能够跳跃的最远下标,不一定从上一个能够跳跃的最远下标int steps = 0; // 跳跃所需的最少步数for (int i = 0; i < nums.length - 1; i++) {farAble = Math.max(farAble, i + nums[i]); // 更新能够跳跃的最远下标if (i == farEd) { // 如果下标遍历到上一个能够跳跃的最远下标,则更新它,并且让步数加一farEd = farAble;steps++;}}return steps;}
}

48. 旋转图像

题目链接

48. 旋转图像

标签

数组 数学 矩阵

要求

  • 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请 不要 使用另一个矩阵来旋转图像。

思路

这道题属于是做过就会,没做过很难想,所以建议不想看证明就把这种解法记住。
对于将一个矩阵顺时针旋转90度,可以使用先主对角线反转再水平翻转的方法。至于证明,可以去看看力扣的官方题解,建议从方法一开始看,看到方法三,然后就能理解题解中的公式了。

代码

class Solution {public void rotate(int[][] matrix) {int n = matrix.length;// 主对角线翻转for (int i = 0; i < n; i++) {for (int j = 0; j < i; j++) {int t = matrix[i][j];matrix[i][j] = matrix[j][i];matrix[j][i] = t;}}// 水平翻转for (int i = 0; i < n; i++) {for (int j = 0; j < n >> 1; j++) {int t = matrix[i][j];matrix[i][j] = matrix[i][n - j - 1];matrix[i][n - j - 1] = t;}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/23454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring源码初始学习基础-环境

环境&#xff1a;在这里插入代码片 allprojects {repositories {maven { url file:///D:/software/repository} // 本地仓库地址&#xff0c;如果没有依次向下寻找maven { url "https://maven.aliyun.com/repository/public" }mavenLocal()mavenCentral()}buildscri…

2024/6/6随笔

儿童节找了个房子&#xff0c;850元20平&#xff0c;我一开始还以为捡漏了&#xff0c;md&#xff0c;直接痛快交钱&#xff0c;第一次放东西的时候发现它这个单间tmd房间的灯在玄关位置&#xff0c;我真的醉了啊。还好有一个3平方米的小阳台&#xff0c;不然我肯定找房东骂她&…

2年JAVA今日头条3轮面试经历

面头条的时候已经是十月底了。大半个月没有面试&#xff0c;之前准备的知识点比如http状态码之类的记忆性的东西&#xff0c;早就忘光了。 二面的时候问了一堆状态码&#xff0c;全都不记得了。面试官态度很好&#xff0c;跟我说&#xff0c;你现在不记得了&#xff0c;说明你…

CentOS 7.9 安装配置Python2与Python3共存

CentOS 7.9 安装配置Python2与Python3共存 CentOS 7.9默认安装的是Python2.7.5版本, yum仓库中python3的版本是Python3.6.8。当需要更新的Python3版本时&#xff0c;需要手动编译安装。同时CentOS中部分工具如yum依赖Python2&#xff0c;yum安装python3时不会引发依赖问题&…

【Vue】组件通信

文章目录 一、组件之间如何通信二、组件关系分类三、通信解决方案四、父子通信流程五、父向子通信代码示例六、子向父通信代码示例 组件通信&#xff0c;就是指组件与组件之间的数据传递 组件的数据是独立的&#xff0c;无法直接访问其他组件的数据。想使用其他组件的数据&…

k8s学习--kube-proxy的三种工作模式详细解释

kube-proxy 是 Kubernetes 中负责集群中网络规则的组件&#xff0c;它维护网络规则使得 Pod 间的网络通信和访问集群外部的服务成为可能。kube-proxy 支持三种工作模式&#xff1a;userspace 模式、iptables 模式和 ipvs 模式。 快速理解 userspace 模式 实现简单&#xff0c;…

?。。。。。。。。。。。

--超值大礼包&#xff0c;部分原型在线预览地址-- PC端标准化元件库模板&#xff1a; https://axhub.im/pro/db1fd100c40ab6cc/#g1 生鲜电商APP&#xff1a; https://axhub.im/ax9/3ab6ee4196a35d4b/#g1 抖音高保真原型地址&#xff1a; https://axhub.im/pro/56e8362bbc3d4897…

MethodArgumentNotValidException提取关键报错信息返回

问题&#xff1a;报错框架问题 目的&#xff1a;只需要关键提示词&#xff1b; e.message:Validation failed for argument [0] in com.victorlamp.hviot.common.pojo.CommonResult<com.victorlamp.hviot.service.management.entity.thing.Thing> com.victorlamp.hviot…

利用人工智能-智慧合同管理系统规避企业合同管理风险

随着企业业务的不断扩展&#xff0c;合同管理在企业运营中扮演着越来越重要的角色。然而&#xff0c;传统的合同管理方法往往存在效率低下、风险控制不足等问题。为了解决这些问题&#xff0c;道本科技智慧合同管理系统不仅通过合同全生命周期的管理对企业合同管理从宏观上做了…

开发uniapp 小程序时遇到的问题

1、【微信开发者工具报错】routeDone with a webviewId XXX that is not the current page 解决方案: 在app.json 中添加 “lazyCodeLoading”: “requiredComponents” uniapp的话加到manifest.json下的mp-weixin 外部链接文章&#xff1a;解决方案文章1 解决方案文章2 &qu…

flash掉位问题及其解决办法

掉位现象是使用Flash存储器时&#xff0c;由于某些原因导致存储的数据发生错误或丢失的现象。一般可能由于硬件故障、电源问题、软件错误或使用不当等原因引起。 解决Flash掉位问题需要根据具体情况采取不同的方法。常见的解决办法及预防措施包括&#xff1a; 1.检查硬件故障…

SEACells:元细胞分析

元细胞是从单细胞测序数据中衍生的细胞分组&#xff0c;代表高度精细的不同细胞状态。在这里&#xff0c;作者介绍了单细胞细胞状态聚集 (SEACells)&#xff0c;这是一种用于识别元细胞的算法&#xff0c;它克服了单细胞数据的稀疏性&#xff0c;同时保留了传统细胞聚类所掩盖的…

【C++进阶】深入STL之vector:深入研究迭代器失效及拷贝问题

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;初步了解vector &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀STL之vector &#x1f4d2;1. 迭…

Linux C语言:数组的定义和初始化

一、数组 1、定义 在程序设计中&#xff0c;为了处理方便&#xff0c;把具有相同类型的若干变量按有序的形式组织起来&#xff0c;具有一定顺序关系的若干个变量的集合就是数组 。 2、特点 组成数组的各个变量称为数组的元素数组中各元素的数据类型要求相同元素在内存中是连…

pdf的压缩该怎么做?快速在线压缩pdf的方法

pdf文件是现在很常用的一种文件格式&#xff0c;有很多的文件内容都可以通过这种格式来展示内容&#xff0c;比如一些通知文件、设计图、个人信息等等&#xff0c;文件的内容越多就会越大&#xff0c;在使用的时候经常会受到一定的限制。那么有什么方法能够快速的将pdf文件变小…

目标检测-AnyLabeling标注格式转换成YOLO格式

Anylabel可以极大的增加数据的标注效率&#xff0c;但是其标注格式如何能转换成YOLO标注格式&#xff0c;具体内容如下所示。 关于AnyLabeling的其它详细介绍如下链接所示 https://blog.csdn.net/u011775793/article/details/134918861 Github链接 https://github.com/vietanhd…

巧用docker+jmeter快速实现分布式百万级并发

分享背景 碰到的问题&#xff1a; 一个JMeter实例可能无法产生足够的负载来对你的应用程序进行压力测试&#xff5e; 解决办法&#xff1a; 1、修改jmeter配置文件里的内存堆 2、引入jmeter分布式压测 带来的问题&#xff1a; 如果我们要做分布式负载测试–我们需要1个…

企业数据挖掘建模平台极简建模流程

泰迪智能科技企业数据挖掘建模平台是企业自主研发&#xff0c;面向企业级用户的快速数据处理构建模型工具。平台底层算法基于R语言、Python、Spark等引擎&#xff0c;使用JAVA语言开发&#xff0c;采用 B/S 结构&#xff0c;用户无需下载客户端&#xff0c;可直接通过浏览器进…

GAT1399协议分析(7)--pycharm anaconde3 配置pyside2

一、安装pyside2 pip install pyside2 二、配置qtdesigner File->Settings->Tools->External tools 点击添加,添加QtDesigner, 注意designer.exe路径,需要在虚拟环境下。 三、添加pySide2 File->Settings->Tools->External tools 点击添加,添加PyS…

高效内容分发:海外短剧推广平台的流媒体传输技术挑战与解决

随着海外短剧市场的蓬勃发展&#xff0c;如何高效地将短剧内容分发给全球观众成为了推广平台必须面对的一大挑战。在这一过程中&#xff0c;流媒体传输技术起着至关重要的作用。然而&#xff0c;由于网络环境的复杂性和多样性&#xff0c;流媒体传输面临着带宽限制、延迟等诸多…