当前位置: 首页 > article >正文

二维数组“降维”到一维数组----从零开始的算法

一.核心前提核心前提元素总数不变且操作基于“行优先遍历”顺序这里的行优先对象指的是二维数组。• 适用场景当题目要求将一个矩阵按特定顺序重新排列为新的行、列维度且元素顺序在内存中的线性排列保持一致时就可以使用一维下标作为中间桥梁。适用场景包括矩阵变形如 LeetCode 566将m×n矩阵转为r×c矩阵。图像处理将 RGB 图像的 3 维数组展平为一维向量输入神经网络Flatten 层。数据扁平化将二维表格数据按行拼接成一维数组用于存储或传输。矩阵运算底层优化在实现矩阵乘法、卷积等操作时将矩阵按行主序或列主序线性化利用 CPU 缓存局部性加速计算。条件你只需要按线性下标顺序逐个搬运元素而不涉及复杂的旋转、转置或条件筛选。因为线性下标与二维坐标的映射是双射一一对应所以只要总数相同任意合法维度都可重塑。二.行主序 or 列主序顾名思义行主序Row-major order在内存中同一行的元素连续存放行与行之间顺序排列。即第一行的所有元素 → 第二行的所有元素 → … → 最后一行的所有元素。列主序Column-major order在内存中同一列的元素连续存放列与列之间顺序排列。即第一列的所有元素 → 第二列的所有元素 → … → 最后一列的所有元素。例子;示例矩阵[[1,2,3],[4,5,6]]存储顺序内存中的线性排列下标从0开始行主序[1, 2, 3, 4, 5, 6]列主序[1, 4, 2, 5, 3, 6]• 坐标映射:坐标映射公式设矩阵列数为C总列数固定存储顺序二维坐标(row, col)→ 一维下标index一维下标index→ 二维坐标(row, col)行主序index row * C colrow index / Ccol index % C列主序index col * R rowR为行数row index % Rcol index / R补充性能影响局部性原理行主序访问行元素连续内存缓存命中率高速度极快。行主序访问列元素内存跳跃缓存频繁失效速度慢可能慢几十倍例题leetcode 566 重塑数组在 MATLAB 中有一个非常有用的函数reshape它可以将一个m x n矩阵重塑为另一个大小不同r x c的新矩阵但保留其原始数据。给你一个由二维数组mat表示的m x n矩阵以及两个正整数r和c分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的则输出新的重塑矩阵否则输出原始矩阵。示例 1输入mat [[1,2],[3,4]], r 1, c 4输出[[1,2,3,4]]示例 2输入mat [[1,2],[3,4]], r 2, c 4输出[[1,2],[3,4]]#includeiostream #includevector using namespace std; class Solution { public: vectorvectorint matrixReshape(vectorvectorint mat, int r, int c) { int m mat.size(); int n mat[0].size(); if (m*n ! r*c) return mat; vectorvectorint answer(r,vectorint(c,0)); for (int i 0; i m; i){ for (int j 0; j n; j){ int newrow 0,newcol 0; int temp i*n j; newrow temp / c; newcol temp % c; answer[newrow][newcol] mat[i][j]; } } return answer; } };或者也可以#includeiostream #includevector using namespace std; class Solution { public: vectorvectorint matrixReshape(vectorvectorint mat, int r, int c) { int m mat.size(); int n mat[0].size(); if (m * n ! r *c) { return mat; } vectorvectorint answer(r,vectorint(c)); for (int i 0; i m*n ; i){ int newRow i / c; //第i行 int newcol i % c; // 第j个 新的 int oldRow i / n; int oldcol i % n; answer[newRow][newcol] mat[oldRow][oldcol]; } return answer; } };两者的时间复杂度和空间复杂度都是一样的前者更加接近于模拟的方式便于理解。本章是学习哈希表做题的时候发现的问题特此单开一章用于总结。希望正在阅读的你有所帮助。喜欢我的话可以点点免费的赞和关注谢谢支持

相关文章:

二维数组“降维”到一维数组----从零开始的算法

一.核心:前提: 核心前提:元素总数不变,且操作基于“行优先遍历”顺序(这里的行优先,对象指的是二维数组)。• 适用场景:当题目要求将一个矩阵按特定顺序重新排列为新的行、列维度&am…...

从七桥问题到算法竞赛:图解Fleury与Hierholzer,谁才是寻找欧拉路径的更优解?

从七桥问题到算法竞赛:图解Fleury与Hierholzer,谁才是寻找欧拉路径的更优解? 18世纪,普鲁士的哥尼斯堡城(现俄罗斯加里宁格勒)流传着一个有趣的谜题:能否设计一条路线,让人不重复地走…...

直线电机在 OLED 精细金属掩模板(FMM)中的精密应用

在高端 OLED 显示面板迈向高分辨率、大尺寸、超高清的今天,像素精度已成为决定屏幕画质的核心竞争力。而在 OLED 蒸镀工艺中,精细金属掩模板(FMM) 正是定义像素边界、决定成像品质的 “关键心脏”,也是显示行业公认的技…...

实测踩坑:LLaMA-Factory批量推理不支持vLLM?手把手教你用异步API提速5倍

LLaMA-Factory批量推理性能瓶颈突破:异步API实战指南 上周在部署Meta-Llama-3-8B模型时,我遇到了一个令人抓狂的问题——官方文档推荐的批量推理方案处理100条简单数学运算竟耗时4分42秒!经过72小时的技术攻关,终于找到将效率提升…...

TVA的基本概念、特征及其发展现状

随着人工智能技术的飞速跃迁,传统的机器视觉正逐步向更为高级的“AI智能体视觉”演进。作为工业4.0与智能制造的核心驱动力之一,这一技术不再局限于简单的图像捕捉与处理,而是赋予了机器“看懂”与“理解”的能力,使其能够像人类专…...

【Python】深入剖析SSLError: Max retries exceeded with url的根源与实战修复

1. 理解SSLError: Max retries exceeded with url的本质 当你用Python的requests库发送网络请求时,突然蹦出"SSLError: Max retries exceeded with url"这个错误,是不是感觉一头雾水?别急,我们先来拆解这个错误信息的含…...

SAP AMDP实战避坑指南:从CDS Table Function到Procedure的完整配置流程

SAP AMDP深度实战:从CDS Table Function到Procedure的高效配置与避坑指南 当ABAP开发者需要在SAP HANA环境中实现高性能数据库逻辑时,AMDP(ABAP-Managed Database Procedures)已经成为不可或缺的技术选择。不同于传统的ABAP代码&…...

Eye-in-Hand还是Eye-to-Hand?从实际项目出发,聊聊九点标定在两种场景下的配置差异与避坑点

Eye-in-Hand与Eye-to-Hand:九点标定的实战选择与避坑指南 在自动化项目的视觉系统设计中,相机安装位置的选择往往决定了整个项目的成败。Eye-in-Hand(手眼)和Eye-to-Hand(固定眼)这两种主流配置方式&#x…...

SAP VC实战:用CU01和CS02搞定BOM里的‘智能’对象相关性(附语法避坑指南)

SAP VC实战:用CU01和CS02实现BOM智能对象相关性的完整指南 在工业制造领域,产品配置的复杂性往往超出想象。想象一下,当客户需要定制一台工业设备时,可能有数百种配置选项相互影响——从基础材质到动力系统,从控制模块…...

台达PLC与触摸屏程序模板:CANOPEN总线伺服运动轴控制解决方案,含操作与运动控制手册,支...

台达,AS228T,plc程序模板和触摸屏程序模板,目前6个总线伺服,采用CANOPEN,适用于运动轴控制,程序可以在自动的时候暂停进行手动控制,适用于一些中大型设备,可以防止某个气缸超时时&am…...

ChineseOCR终极指南:4步搞定任意角度文字自动校正与识别

ChineseOCR终极指南:4步搞定任意角度文字自动校正与识别 【免费下载链接】chineseocr yolo3ocr 项目地址: https://gitcode.com/gh_mirrors/ch/chineseocr 在现实OCR应用中,我们经常面临这样的困境:用户上传的身份证是倒置的、拍摄的文…...

7. 军用涡扇发动机全流程核心边界保护与异常工况处置

航空发动机的设计,始终遵循 “安全第一” 的原则,在从起动到停车的全流程中,FADEC 设置了严格的边界红线与保护逻辑,任何超出安全边界的异常,都会触发对应的保护动作,避免发动机损坏,保障飞行安…...

在PC上畅玩Switch游戏:Ryujinx模拟器实用入门指南

在PC上畅玩Switch游戏:Ryujinx模拟器实用入门指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 你是否曾想过在电脑上体验《塞尔达传说:旷野之息》的壮丽世界…...

VMware虚拟机及不同操作系统安装配置

安装VMware Workstation 登录VMware官方下载网站https://support.broadcom.com/group/ecx/my-dashboard,初次登录需要注册一个账号。点击左侧导航栏的My Downloads,然后点击HERE,在新界面的收缩框内输入VMware Workstation,选择V…...

ROS2 Humble + rtabmap + D435i深度相机实现视觉惯性建图(二)—— 地图保存和查看

前文: ROS2 Humble rtabmap D435i深度相机实现视觉惯性建图(一)——环境配置 一、RTABMAP建图 1. 建图 深度相机连接上电脑后,打开终端,输入: ros2 launch rtabmap_examples realsense_d435i_stereo.la…...

曲线工具,备用版

import pymel.core as pm import maya.OpenMaya as om import maya.mel as mel# 工具函数 def createGrp(grpName, parentGrpNone):if pm.objExists(grpName):om.MGlobal.displayWarning(f"{grpName} 已存在,跳过创建")return pm.PyNode(grpName)else:g…...

【大模型应用】AI服务上架合规性-微信小程序使用硅基流动服务

一、目的 目前开发的微信小程序,使用了AI问答功能。在上架后收到了微信的违规处罚警告。在网上搜索了一圈发现目前还没有类似的文章总结过该问题,这里详细记录一下博主对该问题的解决过程。 处罚警告: 违规的小程序内容: 二、解决…...

不只是降噪:聊聊声加ENC算法在TWS耳机通话中的AEC与ANC联动

不只是降噪:声加ENC算法在TWS耳机中的系统级协同设计 当你在嘈杂的地铁里用TWS耳机通话时,是否想过这背后隐藏着一场精密的算法交响乐?ANC(主动降噪)、AEC(回声消除)和ENC(环境噪声消…...

告别显示器!用笔记本和一根网线玩转树莓派4B:SSH+VNC远程桌面完整配置流程

树莓派4B无头模式终极指南:SSHVNC远程桌面全流程实战 第一次拿到树莓派4B时,大多数人会下意识地寻找显示器、键盘和鼠标——就像对待一台普通电脑那样。但真正的高手都知道,这块信用卡大小的开发板最迷人的用法恰恰是"无头模式"(H…...

避开ESP32看门狗的坑:从Ticker定时器触发重启,到理解IDLE任务与CPU核心分配

ESP32看门狗深度解析:从Ticker陷阱到双核任务调度优化 当你在ESP32项目中使用Ticker库实现毫秒级定时器时,是否遇到过即使主循环执行得飞快,系统依然莫名其妙触发看门狗重启的情况?这种看似违反直觉的现象背后,隐藏着F…...

告别数据线!用ESP32蓝牙串口和手机App轻松互传数据(保姆级教程)

ESP32蓝牙串口通信实战:手机与开发板无线交互全指南 蓝牙技术早已不是新鲜事物,但直到ESP32这类高性价比芯片的出现,才真正让无线通信变得触手可及。想象一下:当你调试温湿度传感器时,不再需要拖着数据线在实验室来回奔…...

强承诺比弱承诺便宜——《窗口期:中国广播产业的十年抉择》系列第五篇(收官)

前四篇做完了诊断。这一篇只剩一件事:那份正在编制的国标,应该写成什么样?到这一篇,核心的道理其实已经讲完了——百亿门票、协调失灵、焦点强度、沉默基础设施。剩下的问题只有一个:方案长什么样?很多人看…...

从Ring Buffer到Indirect Buffer:手把手拆解AMD GPU驱动命令提交的完整流程

从Ring Buffer到Indirect Buffer:AMD GPU驱动命令提交全链路深度解析 当你在Linux系统上运行一款基于Vulkan的3A游戏时,显卡驱动如何将绘制指令转化为GPU可执行的机器码?本文将深入AMD GPU驱动的命令提交机制,揭示从用户态到硬件执…...

【龙虾大战】OpenClaw + QClaw + WorkBuddy

龙虾大战🦞【开源虾】OpenClaw🦞【本地虾】QClaw:腾讯电脑管家📋 产品信息✨ 核心功能⚠️ 当前不足🦞【办公虾】WorkBuddy:腾讯云📋 产品信息✨ 核心功能OpenClaw、QClaw 和 WorkBuddy 的核心区…...

AI结对编程实战手册(2024年头部科技公司内部培训材料首次公开)

第一章:智能代码生成在敏捷开发中的应用 2026奇点智能技术大会(https://ml-summit.org) 智能代码生成正深度融入敏捷开发的迭代闭环,成为提升交付速度与代码一致性的关键杠杆。它不再仅作为辅助补全工具,而是嵌入用户故事拆解、测试驱动开发…...

从玩具小车到3D打印机:用51单片机和A4988模块玩转步进电机的5个创意项目

从玩具小车到3D打印机:用51单片机和A4988模块玩转步进电机的5个创意项目 当51单片机遇上A4988驱动模块,这个看似简单的组合却能爆发出惊人的创造力。不同于传统的驱动教程,我们将带你跨越基础,直接进入实战领域——从会动的玩具小…...

Audio Pixel Studio开源镜像实操手册:MIT协议下免配置快速启动

Audio Pixel Studio开源镜像实操手册:MIT协议下免配置快速启动 1. 项目简介 Audio Pixel Studio是一款基于Streamlit开发的轻量级音频处理Web应用,采用MIT开源协议,为用户提供免配置的快速启动体验。这款工具集成了两大核心功能&#xff1a…...

7-Zip开源压缩工具终极指南:解决你文件管理的五大痛点

7-Zip开源压缩工具终极指南:解决你文件管理的五大痛点 【免费下载链接】7z 7-Zip Official Chinese Simplified Repository (Homepage and 7z Extra package) 项目地址: https://gitcode.com/gh_mirrors/7z1/7z 还在为电脑硬盘空间不足而烦恼?需要…...

5个关键步骤彻底掌控Windows Defender:defender-control开源工具深度解析

5个关键步骤彻底掌控Windows Defender:defender-control开源工具深度解析 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/de/defen…...

高通 QCS6490 边缘AI实战:YOLO全系模型部署与调优指南

1. 高通QCS6490与边缘AI的黄金组合 第一次拿到搭载高通QCS6490的开发板时,我正为一个智能货架项目发愁。客户要求能在2秒内完成30件商品的识别,还要控制功耗不超过5W。当时试了几款主流边缘计算芯片,要么帧率上不去,要么功耗直接爆…...