LeetCode100 刷题记录

news/2024/5/10 21:42:06

文章目录

    • 矩阵相关
      • 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.cpky.cn/p/10205.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

利用Python爬取高德地图全国地铁站点信息

利用Python中的requests库进行地铁站点信息的获取,同时将数据保存在本机excel中 # 首先引入所需要的包 import requests from bs4 import BeautifulSoup import pandas as pd import json# 发送 GET 请求获取网页内容 url http://map.amap.com/subway/index.html response r…

perf的安装与迁移

前言 perf是性能优化很重要的工具之一&#xff0c;本篇博客就来看一下perf的安装以及遇到的问题。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程&#xff0c;未来预计四个月将高强度更新本专栏&#xff0c;喜欢的可以关注本博主并订阅本专栏&#xff0c;一起讨论一起学…

独立游戏《星尘异变》UE5 C++程序开发日志1——项目与代码管理

写在前面&#xff1a;本日志系列将会向大家介绍在《星尘异变》这款模拟经营游戏&#xff0c;在开发时用到的与C相关的泛用代码与算法&#xff0c;主要记录UE5C与原生C的用法区别&#xff0c;以及遇到的问题和解决办法&#xff0c;因为这是我本人从ACM退役以后第一个从头开始的项…

python 蓝桥杯填空题

文章目录 字母数判断列名&#xff08;进制问题&#xff09;特殊日期大乘积星期几 字母数 由于是填空题&#xff0c;那么寻找的话&#xff0c;就直接让每一个位置都是A,通过计算看看是不是结果大于2022即可 判断列名&#xff08;进制问题&#xff09; 这道题目&#xff0c;我们可…

libevent源码解析:io事件(一)

文章目录 前言一、用例简单服务端实现参数设置 二、基本数据结构介绍三、源码分析event_base_newevent_newevent_addevent_base_dispatch 三、libevent和epoll中的事件标记epoll中的事件标记libevent中的事件标记libevent和epoll中事件标记的对应关系 总结 前言 libevent中对三…

c语言游戏实战(10):坤坤的篮球回避秀

前言&#xff1a; 这款小游戏是博主耗时两天半完成的&#xff0c;玩家需要控制坤坤在游戏界面上移动&#xff0c;来躲避游戏界面上方不断掉下来的篮球。本游戏使用C语言和easyx图形库编写&#xff0c;旨在帮助初学者了解游戏开发的基本概念和技巧。 在开始编写代码之前&#…