leetcode每日一题打卡

leetcode每日一题

  • 746.使用最小花费爬楼梯
  • 162.寻找峰值
  • 1901.寻找峰值Ⅱ

从2023年12月17日开始打卡~持续更新

746.使用最小花费爬楼梯

2023/12/17
在这里插入图片描述

代码

  • 解法一
class Solution {public int minCostClimbingStairs(int[] cost) {int n = cost.length;int[] dp = new int[n+1];dp[0] = 0;dp[1] = 0;for(int i = 2;i <= n;i++){dp[i] = Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);}return dp[n];}
}
  • 解法二(优化空间)
class Solution {public int minCostClimbingStairs(int[] cost) {int dp1 = 0;int dp2 = 0;for(int i = 2;i <= cost.length;i++){int dpi = Math.min(cost[i-1]+dp2,cost[i-2]+dp1);dp1 = dp2;dp2 = dpi;}return dp2;}
}

分析

  • 确定dp数组的含义

    • 到达第i个台阶需要花费的价格为dp[i]
  • 确定递推公式

    • 上一个台阶,dp[i] = dp[i-1]+cost[i-1]
    • 上两个台阶,dp[i] = dp[i-2]+cost[i-2]
  • 初始化dp

    • 根据题意 第一步不需要花钱所以,dp[0] = 0,dp[1]=0
  • 解法二

    • 递推公式本来就是根据cost数组得来的,只需要记录一下前两位的值并且更新就行了。

162.寻找峰值

2023/12/18
在这里插入图片描述

代码

  • 直接找最大值
class Solution {public int findPeakElement(int[] nums) {int maxIndex = 0;for(int i = 1;i<nums.length;i++){if(nums[i] > nums[maxIndex]){maxIndex = i;}}return maxIndex;}
}
  • 模拟
class Solution {public int findPeakElement(int[] nums) {int n = nums.length;for(int i = 0;i < n;i++){boolean ok = true;if(i - 1 >= 0){if(nums[i-1] >= nums[i]) ok = false;}if(i + 1 < n){if(nums[i+1] >= nums[i]) ok = false;}if(ok) return i;}return -1;}
}
  • 二分
class Solution {public int findPeakElement(int[] nums) {int l = 0;int r = nums.length - 1;while(l < r){int mid = (l+r)/2;if(nums[mid] < nums[mid+1]) l = mid + 1;else r = mid;}return r;}
}

1901.寻找峰值Ⅱ

2023/12/19
在这里插入图片描述

代码

  • 暴力
class Solution {public int[] findPeakGrid(int[][] mat) {int p = 0,q = 0;for(int i = 0;i < mat.length;i++){for(int j = 0;j < mat[0].length;j++){if(mat[i][j] > mat[p][q]){p = i;q = j;}}}return new int[]{p,q};}
}
  • 二分
class Solution {public int[] findPeakGrid(int[][] mat) {int m = mat.length,n = mat[0].length;int t = 0,b = m - 1;int max = 0,k = 0;while(t < b){int mid = (t+b)/2;for(int i = 0;i < n;i++){if(mat[mid][i] > max){max = mat[mid][i];k = i;}}if(mat[mid][k] < mat[mid+1][k]) t = mid+1;else b = mid;}for(int j = 0;j < n;j++){if(mat[b][j] > mat[b][k]){max = mat[b][j];k = j;}}return new int[]{b,k};}
}

分析

  • 二分
    • 上一个峰值问题,我们二分的是数,这次我们二分的是层
    • 定义最上层t和最底层b,就如同上一个峰值问题的左右边界
    • 因为找的峰值必定是每层的最大值,所以定义一个maxk记录值和下标
    • 进入循环,先找到mid层的最大值
    • 再和mid下一层进行比较,改换边界。二分为什么这么写,可看宫水三叶大佬的证明
    • 找到最终的层数mid,遍历找最大值即可。

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

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

相关文章

C51--小车——PWM调速

如何进行小车PWM调速&#xff1a; 原理&#xff1a; 全速前进&#xff1a;LeftCon1A 0&#xff1b;LeftCon1B 1&#xff1b; 完全停止&#xff1a;LeftCon1A 0&#xff1b;LeftCon1B 0&#xff1b;单位时间内&#xff0c;例如20ms&#xff0c;有15ms是全速&#xff0c;5m…

【牛客网】编程题:找到无序数组中最小的k个数(146)

[编程题]&#xff1a;找到无序数组中最小的k个数 热度指数&#xff1a;2394时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒空间限制&#xff1a;C/C 256M&#xff0c;其他语言512M 算法知识视频讲解 给定一个整型数组arr&#xff0c;找到其中最小的k个数。 输入描述: 输…

Linux常用基本命令操作

目录 一、认识shell 1、什么是shell 2、命令的本质 3、内部命令和外部命令 4、harsh缓存 5、命令执行的过程 6、如果打了一个命令&#xff0c;提示该命令不存在 7、命令提示符 8、Linux系统文件夹 二、Linux常用命令 1、通用Linux命令行格式 2、编辑Linux命令行的辅…

Spring Boot + MinIO 实现文件切片极速上传技术

文章目录 1. 引言2. 文件切片上传简介3. 技术选型3.1 Spring Boot3.2 MinIO 4. 搭建Spring Boot项目5. 集成MinIO5.1 配置MinIO连接信息5.2 MinIO配置类 6. 文件切片上传实现6.1 控制器层6.2 服务层6.3 文件切片上传逻辑 7. 文件合并逻辑8. 页面展示9. 性能优化与拓展9.1 性能优…

qt源码链接C++automic

qaction.cpp source code [qtbase/src/widgets/kernel/qaction.cpp] - Codebrowser C原子变量atomic详解 - 知乎 (zhihu.com)

[C++ 从入门到精通] 15.友元函数、友元类、友元成员函数

&#x1f4e2;博客主页&#xff1a;https://loewen.blog.csdn.net&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 丶布布原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&#x1f4e2;现…

统计分析绘图软件 GraphPad Prism 10 mac功能介绍

GraphPad Prism mac是一款专业的统计和绘图软件&#xff0c;主要用于生物医学研究、实验设计和数据分析。 GraphPad Prism mac功能和特点 数据导入和整理&#xff1a;GraphPad Prism 可以导入各种数据格式&#xff0c;并提供直观的界面用于整理、编辑和管理数据。用户可以轻松地…

qsort函数应用

1.引入 我们前面学习了一些常见的排序方法&#xff0c;比如冒泡排序等&#xff0c;但它仅局限于整型的排序&#xff0c;今天我们要介绍一个牛气哄哄的库函数qsort函数&#xff0c;这个函数可就厉害了&#xff0c;能排序任意类型数据&#xff0c;掌握后可谓受益终身&#xff0c;…

PyQt中的冒号(:)

在这段代码中&#xff0c;冒号&#xff08;:&#xff09;的使用是类型注解的一种形式&#xff0c;用于显式地指定变量的类型。在Python 3.5及以后的版本中&#xff0c;引入了类型注解的概念&#xff0c;可以在变量名后面使用冒号来注解变量的类型。 例如&#xff0c;在以下代码…

Python 安装第三方模块

要安装三方模块&#xff0c;需要知道模块的名字和pip。 pip来源&#xff1a; Mac、Linux无需安装自带。 Window:勾选了pip和add python.exe to Path 目录 安装Pillow 查看pip版本 命令行安装 查看本地安装库 升级pip 使用Pillow 引入三方库 打开图片 查看图片的信息 …

Metashape 自定义比例尺 / 无POS时如何制作DEM

前言操作步骤 前言 Metashape 自定义比例尺 和 无POS时如何制作DEM&#xff0c;此二者的操作步骤本质上是一样的。 当我们输入的照片没有POS&#xff0c;且没有做像控点的时候&#xff0c;比如我们仅仅拍摄了一个比较小的物体&#xff0c;可能是一瓶饮料或者一个椅子。 那么此…

C++刷题 -- KMP算法

C刷题 – KMP算法 文章目录 C刷题 -- KMP算法1.算法讲解2.算法实现 https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/description/ 1.算法讲解 KMP算法是一种字符串匹配算法&#xff0c;当出现字符串不匹配时&#xff0c;可以记录一部分之…

【>D:\10\Debug\RCa00828(34): fatal error RC1022: expected ‘#endif‘】

1>D:\10\Debug\RCa00828(34): fatal error RC1022: expected ‘#endif’ The error message you’re seeing, fatal error RC1022: expected ‘#endif’, indicates that the resource compiler encountered an issue when processing a resource script file (typically w…

【CLion】使用CLion开发STM32

本文主要记录使用CLion开发STM32&#xff0c;并调试相关功能 使用的CLion版本&#xff1a;2023.3.1 CLion嵌入式配置教程&#xff1a;STM32CubeMX项目 |CLion 文档 (jetbrains.com) OpenOCD官网下载&#xff1a;Download OpenOCD for Windows (gnutoolchains.com) GNU ARM工…

大话前端:WebAssembly的未来与前端开发

大话前端&#xff1a;WebAssembly的未来与前端开发 引言 近年来&#xff0c;WebAssembly&#xff08;简称Wasm&#xff09;作为一种新兴的网络技术&#xff0c;正在逐步改变前端开发的格局。作为一种低级的类汇编语言&#xff0c;它允许代码以接近原生的速度运行&#xff0c;…

lv12 linux 内核移植 10

目录 1 内核概述 1.1 内核与操作系统 1.2 Linux层次结构 1.3 Linux内核特点 2 Linux内核源码结构 2.1 Linux内核源码获取 2.2 源码结构 3 Linux内核移植 3.1 在 Linux 官网下载 Linux 内核源码&#xff08;这里我们下载 linux-3.14.tar.xz&#xff09; 3.2 拷贝内核源…

React中对UI组件化的步骤和设计原理

在 React 中&#xff0c;对 UI 进行组件化是一个将复杂界面拆分成更小、独立和可复用部分的过程。这种方法有助于提高应用的可维护性、可测试性&#xff0c;并且可以提升开发效率。下面是 React 中对 UI 组件化的步骤和设计原理的详细解释&#xff1a; 步骤一&#xff1a;识别…

uniapp组件和周期的知识点以及怎么使用

UniApp是一个使用Vue.js开发跨平台应用的框架&#xff0c;它可以将代码编译成微信小程序、支付宝小程序、H5、App等多个平台的应用。在UniApp中&#xff0c;组件是构建应用界面的基本单位&#xff0c;而生命周期则是组件在实例化、挂载、更新和销毁过程中的一系列方法。 以下是…

【Spark-ML源码解析】Word2Vec

前言 在阅读源码之前&#xff0c;需要了解Spark机器学习Pipline的概念。 相关阅读&#xff1a;SparkMLlib之Pipeline介绍及其应用 这里比较核心的两个概念是&#xff1a;Transformer和Estimator。 Transformer包括特征转换和学习后的模型两种情况&#xff0c;用来将一个DataFr…

Unity触摸 射线穿透UI解决

unity API 之EventSystem.current.IsPointerOverGameObject() 命名空间 &#xff1a;UnityEngine.EventSystems 官方描述&#xff1a; public bool IsPointerOverGameObject(); public bool IsPointerOverGameObject(int pointerId); //触摸屏时需要的参数&#xff…