剑指offer题解合集——Week1day7

文章目录

  • 剑指offerWeek1
    • 周日:旋转数组的最小数字
      • AC代码
      • 思路:
      • 部分模拟
    • 周日:矩阵中的路径
      • AC代码
      • 思路:

剑指offerWeek1

周日:旋转数组的最小数字

题目链接:旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个升序的数组的一个旋转,输出旋转数组的最小元素。例如数组 {3,4,5,1,2}为 {1,2,3,4,5}的一个旋转,该数组的最小值为 1数组可能包含重复项。注意:数组内所含元素非负,若数组大小为 0
,请返回 −1数据范围
数组长度 [0,90]样例
输入:nums = [2, 2, 2, 0, 1]输出:0

AC代码

class Solution {
public:int findMin(vector<int>& nums) {if (nums.empty()) return -1;int k = nums.size() - 1;while (k >= 0 && nums[k] == nums[0]) k -- ;if (nums[k] >= nums[0]) return nums[0];int l = 0, r = k;while (l < r){int mid = l + r >> 1;if (nums[mid] < nums[0]) r = mid;else l = mid + 1;}return nums[l];}
};

思路:

整体思路

题目提到了升序,满足二分条件,则可以使用二分来解先在脑子里设想一个反比例函数,分别位于第二、四象限
答案位于第四象限
然后在反比例函数中,随即选取一个值,记作x,将这个值x和反比例函数第一个数值记作t,对比
如果x大于t,说明x位于第二象限里,因此比x小的数值都舍弃
如果x小于t,说明x位于第四象限,因此比x大的都舍弃特别的,样例不一定是一个完美的反比例函数,也就是说,第四象限的数据可能和反比例函数第一个值相等,要先处理一下

部分模拟

样例:{3,4,5,1,2}

分为两组,3, 4, 5和1, 2

  • l = 0, r = 4, mid = 2, nums[mid] = 5(这里记作x,nums[5]太长了)
  • x > 3,因此,x之前的数值都舍去,包括x自身,l = mid + 1;
  • 此时,数组只剩下1, 2
  • l = 3, r = 4, mid = 3, x = 1
  • 命中

周日:矩阵中的路径

题目链接:旋转数组的最小数字

请设计一个函数,用来判断在一个矩阵中是否存在一条路径包含的字符按访问顺序连在一起恰好为给定字符串。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。注意:输入的路径字符串不为空;
所有出现的字符均为大写英文字母;
数据范围
矩阵中元素的总个数 [0,900]路径字符串的总长度 [1,900]样例
matrix=
[["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]
]str="BCCE" , return "true" str="ASAE" , return "false"

AC代码

class Solution {
public:bool hasPath(vector<vector<char>>& matrix, string &str) {for (int i = 0; i < matrix.size(); i ++ )for (int j = 0; j < matrix[i].size(); j ++ )if (dfs(matrix, str, 0, i, j))return true;return false;}bool dfs(auto& matrix, auto& str, int u, int x, int y){if (matrix[x][y] != str[u]) return false;if (u == str.size() - 1) return true;int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};auto t = matrix[x][y];matrix[x][y] = '%';for (int i = 0; i < 4; i ++ ){int a = x + dx[i], b = y + dy[i];if (a >= 0 && b >= 0 && a < matrix.size() && b < matrix[a].size())if (dfs(matrix, str, u + 1, a, b)) return true;}matrix[x][y] = t;return false;}
};

思路:

整体思路

路径匹配,一眼DFSDFS五步走
- 判断是否走过
- 判断是否是终点
- - 标记走过
- 按照算法走下一步
- 恢复

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

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

相关文章

openGauss学习笔记-171 openGauss 数据库运维-备份与恢复-导入数据-深层复制

文章目录 openGauss学习笔记-171 openGauss 数据库运维-备份与恢复-导入数据-深层复制171.1 使用CREATE TABLE执行深层复制171.1.1 操作步骤 171.2 使用CREATE TABLE LIKE执行深层复制171.2.1 操作步骤 171.3 通过创建临时表并截断原始表来执行深层复制171.3.1 操作步骤 openGa…

MATLAB ga函数的使用方法

一、ga句法结构 x ga(fitnessfcn,nvars) x ga(fitnessfcn,nvars,A,b) x ga(fitnessfcn,nvars,A,b,Aeq,beq) x ga(fitnessfcn,nvars,A,b,Aeq,beg,IB,UB) x ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon) x ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options) x …

vue的表单收集案例

Vue的表单收集案例 这只是最基础的表单收集&#xff0c;并未涉及到element-ui。 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>收集表单数据</title><script type"text/javascript" src"../js…

LabVIEW的六轴工业机器人运动控制系统

LabVIEW开发六轴工业机器人运动控制系统 本项目开发了一个高效的工业机器人控制系统&#xff0c;重点关注于运动学算法和轨迹规划算法的实现和测试。LabVIEW作为一个关键技术&#xff0c;在项目中扮演了核心角色。 系统研究与算法开发&#xff1a;首先&#xff0c;项目围绕机…

IOS开发问题记录

1. xcode上传app store connect后testflight没有可构建版本的原因 查看你的邮箱, 里面有原因提示 一般为使用了某些权限, 但是plist没有声明 2. xcode 修改display name后名字并没有改变 原因是并没有修改到plist的CFBundleDisplayName的字段 将CFBundleDisplayName的值修改…

大IP时代文旅品牌如何用数字人玩转数字营销?

在大IP时代&#xff0c;有IP意味着话题、人气、流量以及变现能力&#xff0c;文旅品牌如何打造一个成功的、受欢迎的IP&#xff0c;拓宽文旅资源价值&#xff0c;成为文旅品牌营销的一大痛点。随着元宇宙概念兴起&#xff0c;数字人IP可以满足文旅品牌多元化需求&#xff0c;文…

React学习计划-React16--React基础(二)组件与组件的3大核心属性state、props、ref和事件处理

1. 组件 函数式组件&#xff08;适用于【简单组件】的定义&#xff09; 示例&#xff1a; 执行了ReactDOM.render(<MyComponent/>, ...)之后执行了什么&#xff1f; React解析组件标签&#xff0c;找到了MyComponent组件发现组件是使用函数定义的&#xff0c;随后调用该…

ARM 点灯

.text .global _start _start: led1设置GPIOE时钟使能 RCC_MP_AHB4ENSETR[4]->1 0X50000A28LDR R0,0X50000A28 指定寄存器地址LDR R1,[R0] 将寄存器数值取出来放在R1中ORR R1,R1,#(0x1<<4) 将第4位设置为1STR R1,[R0] 将修改后的值写回去设置PE10为输出 GPIOE…

Python 爬虫之下载视频(三)

批量下载某B主视频 文章目录 批量下载某B主视频前言一、基本思路二、确定遍历循环结构三、基本思路中第12步三、基本思路中第345步总结 前言 上一篇讲了如何去获取标题和视频链接。这篇就跟大家讲一下如何去下载这些视频。本篇会以标题和 视频链接 为突破口&#xff0c;来寻找…

GrayLog日志平台的基本使用-docker容器日志接入

1、/etc/docker/daemon.json中加入如下配置并重启服务 [rootlocalhost src]# cat /etc/docker/daemon.json { "registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"], "log-driver": "gelf", "log-opts":…

验证时间段区间是否有交叉/重叠

点赞再看&#xff0c;养成习惯&#xff0c;大家好&#xff0c;我是辰兮&#xff01;今天介绍如何验证时间段区间是否有交叉/重叠 文章目录&#xff1a; 前言 一、引入库 二、使用步骤 总结 前言 在日常开发过程中&#xff0c;经常会有导入需要校验时间段区间是否有交叉/重叠&a…

CSS中页面的布局案例-利用浮动

&#xff08;接期末课程设计题目&#xff0c;支持定制&#xff09; 利用浮动完成页面布局 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style type"text/css">/*清除默认样式*/*{marg…

JavaScript 对象和 JSON 字符串的区别

JavaScript 对象和 JSON 字符串是两种不同的数据表示形式&#xff0c;它们有以下区别&#xff1a; 语法格式&#xff1a;JavaScript 对象是 JavaScript 语言中的一种数据类型&#xff0c;使用花括号 {} 包裹&#xff0c;属性和值之间使用冒号 : 分隔&#xff0c;并且使用逗号 …

在Jetpack Compose中使用ExoPlayer实现直播流和音频均衡器

在Jetpack Compose中使用ExoPlayer实现直播流和音频均衡器 背景 ExoPlayer与Media3的能力结合&#xff0c;为Android应用程序播放多媒体内容提供了强大的解决方案。在本教程中&#xff0c;我们将介绍如何设置带有Media3的ExoPlayer来支持使用M3U8 URL进行直播流。此外&#x…

PortSwigger Business Logic Vulnerabilities

lab1: Excessive trust in client-side controls 给了100块 买价值1337的货 在历史包里发现 尝试直接修改价格 lab2: High-level logic vulnerability 这里把加入购物车时价格可控的点修复了 但是数量可控 我们可以买负数的东西来加钱 但是返回Cart total price cannot be …

【数据结构】四、串

目录 一、定义 二、表示与实现 定长顺序存储 堆分配存储 链式存储 三、BF算法 四、KMP算法 1.求next数组 方法一 方法二&#xff08;考试方法&#xff09; 2.KMP算法实现 方法一 方法二 3.nextval 4.时间复杂度 本节最重要的就是KMP算法&#xff0c;其他要求不高…

汽车级EEPROM 存储器 M24C64-DRMN3TP/K是电可擦除可编程只读存储器?它的功能特性有哪些?

M24C64-DRMN3TP/K是一款64 Kbit串行EEPROM汽车级设备&#xff0c;工作温度高达125C。符合汽车标准AEC-Q100 1级规定的极高可靠性。 该设备可通过一个高达1MHz的简单串行I2C兼容接口访问。 存储器阵列基于先进的真EEPROM技术&#xff08;电可擦除可编程存储器&#xff09;。M2…

【力扣】543. 二叉树的直径

543. 二叉树的直径 突然间发现现在刷的题好多都和大一时学的数据结构密切相关&#xff0c;比如说这道题就用到的深度优先搜索算法。 题解&#xff1a; 以根节点为例&#xff0c;我们通过遍历左边的深度就可以得到当前左子树的长度&#xff0c;然后再遍历其右边&#xff0c;就…

吴恩达RLHF课程笔记

1.创建偏好数据集 一个prompt输入到LLM后可以有多个回答&#xff0c;对每个回答选择偏好 比如{prompt,answer1,answer2,prefer1} 2.根据这个数据集&#xff08;偏好数据集&#xff09;&#xff0c;创建reward model&#xff0c;这个model也是一个LLM,并且它是回归模型&#…

关于networkx图的文本格式保存与加载

今天需要将networkx生成的graph保存一下&#xff0c;然后再从新加载&#xff0c;虽然可以单独保存边在加载&#xff0c;但是感觉有麻烦&#xff0c;后来找到了json_graph,可以进行文本格式的保存和加载 import networkx as nx from networkx.readwrite import json_graphDG n…