算法(4)-leetcode-explore-learn-数据结构-数组2

leetcode-explore-learn-数据结构-数组2

  • 1.简述
  • 2.例题
    • 2.1 二维数组的对角线遍历
    • 2.2 螺旋遍历
    • 2.3 杨辉三角

本系列博文为leetcode-explore-learn子栏目学习笔记,如有不详之处,请参考leetcode官网:https://leetcode-cn.com/explore/learn/card/array-and-string/198/introduction-to-array/768/

1.简述

本文主要记录二维数据及相关的例题

二维数组的元素排列在矩形网格中,而不是直线上

在一些语言中,二维数组内部实际是使用一维数组实现的–c++中a[i] [j]内部索引时,实际为a[i*n+j] (n为每一行元素的个数)

与一维动态数组类似,一样可以定义二维动态数组,实际上,他可以只是一个嵌套的动态数组。

2.例题

2.1 二维数组的对角线遍历

同一条对角线上元素下标索引和一致。
n*m的矩阵一共有n+m-1条对角线
索引和为偶数时,向上遍历,遍历顺序是(x,0)(x-1,1),(x-2,2),…,(0,x)
索引和为奇数时,向下遍历,遍历顺序为(0,y),(1,y-1),…,(y,0)
28/32

class Solution(object):def findDiagonalOrder(self, matrix):""":type matrix: List[List[int]]:rtype: List[int]"""if not matrix:return []hor = len(matrix)ver = len(matrix[0])leng = hor+ver-1listmatrix = []for x in range(leng+1):if x%2 ==0:for i in range(x,-1,-1):j = x-iif i<hor and j<ver:listmatrix.append(matrix[i][j])elif j>ver:continueelse:for j in range(x,-1,-1):i = x-jif i<hor and j<ver:listmatrix.append(matrix[i][j])elif j>hor:continuereturn listmatrix

参考博文:https://blog.csdn.net/qq_36022260/article/details/103651894

2.2 螺旋遍历

leetcode 54

class Solution(object):def spiralOrder(self, matrix):""":type matrix: List[List[int]]:rtype: List[int]"""if not matrix:return []R,C=len(matrix),len(matrix[0])flag=[[False]*C for _ in matrix]res=[]dr=[0,1,0,-1]    # [r+0,c+1] 表征顺时针的四个方向dc=[1,0,-1,0]r,c=0,0di=0for _ in range(R*C):res.append(matrix[r][c])flag[r][c]=Truen_r,n_c=r+dr[di],c+dc[di]if 0<=n_r<R and 0<=n_c<C and not flag[n_r][n_c]:r,c=n_r,n_celse:di=(di+1)%4r,c=r+dr[di],c+dc[di]return res

2.3 杨辉三角

第i行的元素个数为i+1个,i的取值范围为0,1,…,numRows-1
第i行元素的第一个元素(索引为0)和最后一个元素(索引为i),该行中其它元素的索引j取值范围为0,1,…,i-1.

class Solution(object):def generate(self, c):""":type numRows: int:rtype: List[List[int]]"""res=[]for i in range(numRows):if i==0:res.append([1])elif i==1:res.append([1,1])else:res.append([1]*(i+1))    for j in range(1,i):res[i][j]=res[i-1][j-1]+res[i-1][j]return res            

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

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

相关文章

软件测试基础知识

第一章 1.1 软件测试背景知识和发展史 互联网公司职位架构&#xff1a;产品 运营 技术 市场 行政软件测试&#xff1a;使用人工或自动化手段&#xff0c;来运行或测试某个系统的过程&#xff0c;其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别&#…

key_t IPC键和ftok函数详解和剖析

统建立IPC通讯&#xff08;如消息队列、共享内存时&#xff09;必须指定一个ID值。通常情况下&#xff0c;该id值通过ftok函数得到。 ftok原型如下&#xff1a; key_t ftok( char * fname, int id ) fname就时你指定的文件名(该文件必须是存在而且可以访问的)&#xff0c;id是子…

算法(5)-leetcode-explore-learn-数据结构-字符串

leetcode-explore-learn-数据结构-数组3-字符串1.简述2.例题2.1 二进制求和2.2实现strStr()2.3最长公共前缀本系列博文为leetcode-explore-learn子栏目学习笔记&#xff0c;如有不详之处&#xff0c;请参考leetcode官网&#xff1a;https://leetcode-cn.com/explore/learn/card…

ipcs命令查看管道,消息队列,共享内存

修改消息队列大小&#xff1a; root&#xff1a;用户&#xff1a; /etc/sysctl.conf kernel.msgmnb 4203520 #kernel.msgmnb 3520 kernel.msgmni 2878 保存后需要执行 sysctl -p ,然后重建所有消息队列 ipcs -q : 显示所有的消息队列 ipcs -qt : 显示消息队列的创建时…

Jmeter-基础篇

常用压力测试工具对比 1、loadrunner 性能稳定&#xff0c;压测结果及细粒度大&#xff0c;可以自定义脚本进行压测&#xff0c;但是太过于重大&#xff0c;功能比较繁多 2、apache ab(单接口压测最方便) 模拟多线程并发请求,ab命令对发出负载的计算机…

消息队列接口API(posix 接口和 system v接口)

消息队列 posix API消息队列&#xff08;也叫做报文队列&#xff09;能够克服早期unix通信机制的一些缺点。信号这种通信方式更像\"即时\"的通信方式&#xff0c;它要求接受信号的进程在某个时间范围内对信号做出反应&#xff0c;因此该信号最多在接受信号进程的生命…

算法(6)-leetcode-explore-learn-数据结构-数组字符串的双指针技巧

leetcode-explore-learn-数据结构-数组4-双指针技巧1.双指针技巧--适用情形11.1概述1.2 例题1.2.1 反转字符串1.2.2数组拆分1.2.3 两数之和22双指针技巧-适用情形22.1概述2.2例题2.2.1 移除元素2.2.2 最大连续1的个数2.2.3长度最小的子数组本系列博文为leetcode-explore-learn子…

POSIX和SYSTEM的消息队列应该注意的问题

首先看看POSIX的代码&#xff1a; 1.posix_mq_server.c #include <mqueue.h> #include <sys/stat.h> #include <string.h> #include <stdio.h> #define MQ_FILE "/mq_test" #define BUF_LEN 128 int main() { mqd_t mqd; char b…

算法(7)-leetcode-explore-learn-数据结构-数组-小结

leetcode-explore-learn-数据结构-数组5-小结1.概述2.例题2.1旋转数组2.2 杨辉三角22.3翻转字符串里的单词2.4反转字符串中的单词32.5 删除排序数组中的重复项2.6 移动零本系列博文为leetcode-explore-learn子栏目学习笔记&#xff0c;如有不详之处&#xff0c;请参考leetcode官…

fcntl函数详解

功能描述&#xff1a;根据文件描述词来操作文件的特性。 #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); [描述] fcntl()针对(文件)描述符提供控…

使用nohup让程序永远后台运行

使用nohup让程序永远后台运行 Unix/Linux下一般比如想让某个程序在后台运行&#xff0c;很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台&#xff1a; /usr/local/mysql/bin/mysqld_safe --usermysql &但是加入我们很多程序并不象mysqld一样做…

算法(8)-leetcode-explore-learn-数据结构-链表

leetcode-explore-learn-数据结构-链表11.概述1.1 链表插入操作1.2 链表删除操作2.设计链表本系列博文为leetcode-explore-learn子栏目学习笔记&#xff0c;如有不详之处&#xff0c;请参考leetcode官网&#xff1a;https://leetcode-cn.com/explore/learn/card/linked-list/所…

Mysql索引优化实例讲解

MYSQL描述&#xff1a;一个文章库&#xff0c;里面有两个表&#xff1a;category和article。category里面有10条分类数据。article里面有20万条。article里面有一个"article_category"字段是与category里的"category_id"字段相对应的。article表里面已经把…

给自己的VIM配置

编辑 .vimrc 文件如下&#xff1a; filetype plugin on "autocmd Filetype cpp,c,java,cs set omnifunccppcomplete#Complete set nu set nocp set nobackup let g:C_AuthorName gaoke let g:C_AuthorRef gaoke let g:C_Email gaoketaomee.…

shell一文入门通

简单来说“Shell编程就是对一堆Linux命令的逻辑化处理”。 W3Cschool 上的一篇文章是这样介绍 Shell的 hello world 学习任何一门编程语言第一件事就是输出HelloWord了&#xff01;下面我会从新建文件到shell代码编写来说下Shell 编程如何输出Hello World。 (1)新建一个文件…

算法(9)--两个数的最大公约数

两个数的最大公约数1.辗转相除法求解两个数的最大公约数2.更相减损术求解两个数的最大公约数3.不严格理解1.辗转相除法求解两个数的最大公约数 辗转相除法&#xff1a;两个正整数a和b&#xff08;a>b&#xff09;的最大公约数等于a除以b的余数与b 之间的最大公约数。–如果…

RPC编程

图 3 说明在客户机和服务器之间完成 RPC 涉及的步骤。 图 3. 在客户机和服务器之间完成 RPC 涉及的步骤服务器 RPC 应用程序初始化期间它会向 RPC 运行时库注册接口。需要注册接口是因为&#xff0c;客户机在向服务器发出远程过程调用时&#xff0c;要检查它是否与服务器兼容。…

synchronized使用和原理全解

synchronized是Java中的关键字&#xff0c;是一种同步锁。它修饰的对象有以下几种&#xff1a; 修饰一个方法 被修饰的方法称为同步方法&#xff0c;其作用的范围是整个方法&#xff0c;作用的对象是调用这个方法的对象&#xff1b; 修饰一个静态的方法 其作用的范围是整个…

RPC学习笔记

在查看libc6-dev软件包提供的工具&#xff08;用 dpkg -L libc6-dev 命令&#xff09;的时候&#xff0c;发现此软件包提供了一个有用的工具rpcgen命令。通过rpcgen的man手册看到此工具的作用是把RPC源程序编译成C语言源程序&#xff0c;从而轻松实现远程过程调用。下面的例子程…

算法(10)-leetcode-explore-learn-数据结构-链表双指针技巧

leetcode-explore-learn-数据结构-链表21.概述2.例题2.1 环形链表判断2.2 环形链表22.3 相交链表2.4 删除链表的倒数第N个节点3.小结本系列博文为leetcode-explore-learn子栏目学习笔记&#xff0c;如有不详之处&#xff0c;请参考leetcode官网&#xff1a;https://leetcode-cn…