LeetCode100 刷题记录

文章目录

    • 矩阵相关
      • 1. 旋转矩阵
      • 2. 搜索二维矩阵


矩阵相关

1. 旋转矩阵

题目描述: 给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
题解思路: 先将矩阵上下翻转,然后对矩阵进行对角线翻转。
题解代码:

class Solution {
public:void rotate(vector<vector<int>>& matrix) {int n = matrix.size();// 使用两次反转,先上下翻转,后对角线翻转// 上下翻转for (int i = 0; i < (n / 2); i++) {for (int j = 0; j < n; j++) {swap(matrix[i][j], matrix[n-i-1][j]);}}// 对角线翻转for (int i = 0; i < n; i++) {for (int j = 0; j < i; j++) {swap(matrix[i][j], matrix[j][i]);}}}
};

关键结论:对于矩阵中的元素 matrix [ row ] [ col ] \textit{matrix}[\textit{row}][\textit{col}] matrix[row][col],在旋转后,它的新位置为 matrix new [ col ] [ n − row − 1 ] \textit{matrix}_\textit{new}[\textit{col}][n - \textit{row} - 1] matrixnew[col][nrow1]
在这里插入图片描述


2. 搜索二维矩阵

题目描述: 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。
    在这里插入图片描述
    题解思路: 由于每一行都是单调递增的,因此可以逐行使用二分查找,这样就可以将时间复杂度控制在 O ( n l o g m ) O(nlogm) O(nlogm)之内。
    题解代码:
class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {for(const auto&  row : matrix){auto it = lower_bound(row.begin(),row.end(),target);if( it != row.end() && *it == target){return true;}}return false;}
};

注意,需要先判断it != row.end(),再判断*it == target,否则,判断*it == target会不合法,导致未定义行为(Undefined Behavior, UB

关于 lower_bound(StartIterator, EndIterator, Value)方法的使用:
StartIterator:范围开始的迭代器。
EndIterator:范围结束的迭代器。
Value:需要查找的值。


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

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

相关文章

Android JNI复杂用法,回调,C++中调用Java方法

Android JNI复杂用法&#xff0c;回调&#xff0c;C中调用Java方法 一、前言 Android JNI的 普通用法估计很多人都会&#xff0c;但是C中调用Java方法很多人不熟悉&#xff0c;并且网上很多介绍都是片段的。 虽然C/C调用Java不常用&#xff0c;但是掌握多一点还是有好处的。…

【C++杂货铺】详解string

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 为什么学习string &#x1f4c1; 认识string&#xff08;了解&#xff09; &#x1f4c1; string的常用接口 &#x1f4c2; 构造函数 &#x1f4c2; string类对象的容量操作 &#x1f4c2; string类对象的访问以及遍历操…

js判断页面是否是在iframe里面

文章目录 一、前言1.1、_blank跳转1.2、_self跳转 二、方法2.1、判断子项目是否是在iframe内部2.2、实现_self跳转 三、最后 一、前言 上面是父前端项目里的iframe加载了子前端项目的页面。此时如果点击子项目的内容&#xff0c;如果要进行父项目浏览器页面跳转&#xff0c;可以…

C++初阶 类(上)

目录 1. 什么是类 2. 如何定义出一个类 3. 类的访问限定符 4. 类的作用域 5. 类的实例化 6. 类的大小 7. this指针 1.this指针的引出 2. this指针的特性 8. 面试题 1. 什么是类 在C语言中&#xff0c;不同类型的数据集合体是结构体。为了方便管理结构体&#xff0c;我…

HarmonyOS NEXT应用开发案例——自定义TabBar

介绍 本示例主要介绍了TabBar中间页面如何实现有一圈圆弧外轮廓以及TabBar页签被点击之后会改变图标显示&#xff0c;并有一小段动画效果。 效果图预览 使用说明&#xff1a; 依次点击tabBar页面&#xff0c;除了社区图标之外&#xff0c;其它图标往上移动一小段距离。 实现…

中霖教育:消防工程师报考条件汇总

消防工程师考试报名条件汇总&#xff0c;想要参加考试的考生可以根据自己的专业和学历判断自己是否符合条件。 1、大专学历&#xff0c;消防工程专业&#xff0c;工作年限满6年&#xff0c;从事消防安全技术工作满4年;消防工程相关专业&#xff0c;工作年限满7年&#xff0c;从…

实习记录课程内容

2024年3月1日18:21:09 第二周周五——方法篇 等量关系的构造 初中数学中&#xff0c;让学生构造等量关系的数学原理主要包括以下几个方面&#xff1a; 等式的性质&#xff1a;等式的两边同时加上或减去同一个数&#xff0c;等式仍然成立&#xff1b;等式的两边同时乘以或除以…

利用API接口进行竞品价格监控

在电子商务和零售行业&#xff0c;了解竞争对手的定价策略对于保持市场竞争力至关重要。随着技术的发展&#xff0c;通过编程接口&#xff08;API&#xff09;获取商品详情成为企业监控竞品价格的有效手段。本文将详细介绍如何利用API接口实现竞品价格监控的流程和策略。 第一步…

EventSource数据一次性出来

基于txt/event-stream的EventSource流&#xff0c;使用代理时需注意&#xff1a; 开发阶段如果使用vue自带的代理&#xff0c;需要关闭compress&#xff0c;即 devServer: {proxy: {/xx: {target: ip,changeOrigin: true,pathRewrite: {^/xx: /xx}},},compress: false}再nginx部…

浅谈字典攻击

一、前言 字典攻击是一种常见的密码破解方法&#xff0c;它使用预先编制的字典文件作为攻击字典&#xff0c;通过尝试猜测密码的方式来破解密码。下面是一个关于字典攻击的博客&#xff0c;希望能够为您了解字典攻击提供帮助。 二、字典攻击概述 字典攻击是一种密码破解方法&…

文献学习-14-一种用于高精度微创手术的纤维机器人

Authors: Mohamed E. M. K. Abdelaziz1,2 †, Jinshi Zhao1,3 †, Bruno Gil Rosa1,2 , Hyun-Taek Lee4 , Daniel Simon3,5 , Khushi Vyas1,2 , Bing Li6,7 , Hanifa Koguna3 , Yue Li1 , Ali Anil Demircali3 , Huseyin Uvet8 , Gulsum Gencoglan9,10, Arzu Akcay11,12, Moham…

CDR(CorelDRAW)2024最新汉化注册补丁包下载

CorelDRAW 2024是一款功能强大的平面设计软件&#xff0c;广泛应用于图形设计、编辑照片以及创建网站等领域。凭借对高级操作系统的支持、多监视器查看和4K显示屏的兼容性&#xff0c;它让初始用户、图形专家、小型企业主和设计爱好者都能自信快速地交付专业级结果。 CorelDRA…

一文教你搞懂Vue生命周期

Vue生命周期 生命周期示意图 Vue3 组件创建阶段 new vue new一个vue的实例对象&#xff1b;此时会进入组件的创建过程&#xff08;该组件在代码中被注册并使用时&#xff0c;就代表着其被new了一个新的实例对象&#xff09;。 Init Events & Lifecycle 初始化组件的事件和…

spring aop中获取request和response

Spring AOP 操作中如何使用request和response 实际使用时&#xff0c;如果方法一不行&#xff0c;请使用方法二 方法一 HttpServletRequest request ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletResponse respons…

Python执行 nohup 导致僵尸进程问题. /usr/bin/sh -> /usr/bin/bash

将 /usr/bin/sh -> dash 改成 /usr/bin/sh -> /usr/bin/bash 即可解决. ln -sf /usr/bin/bash /usr/bin/sh cmd" nohup python3 xxxx.py > /xx/xxx.log 2>&1 &" #在python里执行上边的命令ret subprocess.Popen(cmd,shellTrue,stdouts…

uniapp封装文字提示气泡框toolTip组件

uniapp封装文字提示气泡框toolTip组件 文字提示气泡框&#xff1a;toolTip 因为uniapp 中小程序中没有window对象&#xff0c;需手动调用 关闭 第一种办法关闭&#xff1a;this.$refs.tooltip.close() 第二种办法关闭&#xff1a;visible.sync false 移动端没有现成的toolTip组…

【2024.03.05】定时执行专家 V7.1 发布 - TimingExecutor V7.1 Release

目录 ▉ 软件介绍 ▉ 新版本 V7.1 下载地址 ▉ V7.1 新功能 ▼2024-03-03 V7.1 - 更新日志 ▉ V7.0 新UI设计 ▉ 软件介绍 《定时执行专家》是一款制作精良、功能强大、毫秒精度、专业级的定时任务执行软件。软件具有 25 种【任务类型】、12 种【触发器】触发方式&#x…

InstantiationAwareBeanPostProcessor学习

简介 InstantiationAwareBeanPostProcessor 是 Spring 框架中的一个核心接口&#xff0c;它允许在 Spring 容器实例化 bean 之前和之后执行自定义逻辑。这个接口扩展了 BeanPostProcessor 接口&#xff0c;并增加了与 bean 实例化和属性填充相关的回调方法。 这个接口定义的主…

swift 闭包捕获列表

以下函数会打印出什么&#xff1f; var car "Benz" let closure { [car] in print("I drive \(car)") } car "Tesla" closure() 因为 clousre 已经申明将 car 复制进去了&#xff08;[car]&#xff09;&#xff0c;此时clousre 里的 car…

Linux运维工程师不可或缺的10款工具

运维工程师在日常工作中频繁运用的10款工具&#xff0c;并细致阐述每款工具的功能、适用场景以及其卓越之处。 1. Shell脚本&#xff1a; 功能&#xff1a;主要用于自动化任务和批处理作业。 适用场景&#xff1a;频繁用于文件处理、系统管理、简单的网络管理等操作。 优势&…