leetcode简单(矩阵):[566, 766, 832, 867, 999, 1030, 1261, 1275, 1337, 1351]
566. 重塑矩阵
var matrixReshape = function(mat, r, c) {
if (mat.length * mat[0].length != r * c) {
return mat;
}
var newArr = mat.flat(Infinity);
var result = [];
var k = 0;
for (var i = 0; i < newArr.length; i++) {
if (!result[k]) {
result[k] = [];
}
result[k].push(newArr[i]);
if ((i + 1) % c == 0) {
k++;
}
}
return result;
};
766. 托普利茨矩阵
var isToeplitzMatrix = function(matrix) {
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[0].length; j++) {
if (
matrix[i + 1] &&
matrix[i + 1][j + 1] != undefined &&
matrix[i][j] != matrix[i + 1][j + 1]
) {
return false;
}
}
}
return true;
}
832. 翻转图像
var flipAndInvertImage = function(image) {
var result = [];
for (let i = 0; i < image.length; i++) {
for (let j = image[0].length - 1; j >= 0; j--) {
let tmp = 1 - image[i][j];
if (!result[i]) {
result[i] = [];
}
result[i].push(tmp);
}
}
return result;
};
867. 转置矩阵
var transpose = function(A) {
// return A[0].map((v,i) =>A.map((a,j) =>a[i]))
var res = [];
for (var i = 0; i < matrix.length; i++) {
for (var j = 0; j < matrix[0].length; j++) {
if (!res[j]) {
res[j] = [];
}
res[j][i] = matrix[i][j];
}
}
console.log(res);
return res;
};
999. 可以被一步捕获的棋子数
var numRookCaptures = function(board) {
let x, y; // 车的坐标
let captureAmount = 0; // 捕获量
loop: for (let i = 0; i < 8; i++) {
for (let j = 0; j < 8; j++) {
if (board[i][j] == "R") {
x = i;
y = j;
break loop;
}
}
}
// 车在X轴上 位移距离 上右下左顺序
const dx = [0, 1, 0, -1];
// 车在Y轴上 位移距离 上右下左顺序
const dy = [1, 0, -1, 0];
// 外层循环, 4表示4个方向
for (let i = 0; i < 4; i++) {
for (let j = 1;; j++) {
const moveX = x + j * dx[i];
const moveY = y + j * dy[i];
// 判断棋盘边界 且 不可以碰到象
if ( moveX < 0 || moveX >= 8 || moveY < 0 || moveY >= 8 || board[moveX][moveY] == "B") {
break;
}
if (board[moveX][moveY] == "p") {
captureAmount++;
break; // 捕获到卒后,该方向停止前进
}
}
}
return captureAmount;
};
1030. 距离顺序排列矩阵单元格
var allCellsDistOrder = function(rows, cols, rCenter, cCenter) {
let x = rCenter;
let y = cCenter;
let { abs } = Math;
let res = [];
for (let i = 0; i < rows; i++) {
for (let j = 0; j < cols; j++) {
res.push([i, j]);
}
}
return res.sort(
(a, b) => abs(a[0] - x) + abs(a[1] - y) - (abs(b[0] - x) + abs(b[1] - y))
);
};
1260. 二维网格迁移
var shiftGrid = function(grid, k) {
while (k--) {
for (let i = grid.length - 1; i >= 0; i--) {
grid[(i + 1) % grid.length].unshift(grid[i].pop());
}
}
return grid;
};
1275. 找出井字棋的获胜者
var tictactoe = function(moves) {
const chess = new Array(3).fill(0).map(() => new Array(3).fill(0));
moves.forEach((item, index) => {
let [x, y] = item;
chess[x][y] = index % 2 ? "B" : "A";
});
for (let i = 0; i < 3; i++) {
let [a, b, c] = chess[i]
if (a && a == b && b == c) return a
}
for (let j = 0; j < 3; j++) {
let [a, b, c] = [chess[0][j], chess[1][j], chess[2][j]]
if (a && a == b && b == c) return a
}
let [a, b, c] = [chess[0][0], chess[1][1], chess[2][2]]
if (a && a == b && b == c) return a
let [j, q, k] = [chess[2][0], chess[1][1], chess[0][2]]
if (j && j == q && q == k) return j
if (moves.length < 9) return 'Pending'
return 'Draw'
};
1337. 矩阵中战斗力最弱的 K 行
var kWeakestRows = function(mat, k) {
let result = []
for (let i = 0; i < mat.length; i++) {
let soldier = mat[i].filter(item => item == 1).length
result.push([i, soldier])
}
return result.sort((a, b) => a[1] - b[1]).splice(0, k).map(item => item[0])
};
1351. 统计有序矩阵中的负数
var countNegatives = function(grid) {
return grid.flat(Infinity).filter(item => item < 0).length
};
leetcode简单(矩阵):[566, 766, 832, 867, 999, 1030, 1261, 1275, 1337, 1351]的更多相关文章
- LeetCode:矩阵置零【73】
LeetCode:矩阵置零[73] 题目描述 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [ [1,1,1], ...
- 这样leetcode简单题都更完了
这样leetcode简单题都更完了,作为水题王的我开始要更新leetcode中等题和难题了,有些挖了很久的坑也将在在这个阶段一一揭晓,接下来的算法性更强,我就要开始分专题更新题目,而不是再以我的A题顺 ...
- HDU 1575 Tr A( 简单矩阵快速幂 )
链接:传送门 思路:简单矩阵快速幂,算完 A^k 后再求一遍主对角线上的和取个模 /********************************************************** ...
- leetcode简单题6
今天的华师 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, fro ...
- leetcode 48 矩阵旋转可以这么简单
一行代码解决矩阵旋转(方法三). 方法1: 坐标法 def rotate(self, matrix): n = len(matrix) # 求出矩阵长度 m = (n + 1) // 2 # 求出层数 ...
- leetcode.矩阵.566重塑矩阵-Java
1. 具体题目 给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数.重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充.如果具有给定参数的reshape操 ...
- Java实现 LeetCode 73 矩阵置零
73. 矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [ [1,1,1], [1,0,1], [1,1,1] ...
- LeetCode翻转矩阵后的得分-Python3<六>
上一篇:LeetCode子域名访问计数-Python3.7<五> 题目:https://leetcode-cn.com/problems/score-after-flipping-matr ...
- leetcode 73 矩阵置零 Python
矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [ [1,1,1], [1,0,1], [1 ...
- UVA10870—Recurrences(简单矩阵快速幂)
题目链接:https://vjudge.net/problem/UVA-10870 题目意思: 给出a1,a2,a3,a4,a5………………ad,然后算下面这个递推式子,简单的矩阵快速幂,裸题,但是第 ...
随机推荐
- MySQL所有的主从同步架构搭建方式
目录 一.前言 二.关于MySQL主从同步 三.部署规划 3.1 服务器规划 3.2 数据库目录规划 四.准备工具 五.四台机器上使用通用二进制包安装MySQL(以node7为例) 5.1 上传MyS ...
- DRF之通过GenericAPIView的视图子类实现数据的增删改查接口
1.安装DRF pip install djangorestframework 2.将DRF注册到APP中 INSTALLED_APPS = [ 'django.contrib.admin', 'dj ...
- Vue cli之项目执行流程
整个项目是一个主文件index.html,index.html中会引入src文件夹中的main.js,main.js中会导入顶级单文件组件App.vue,App.vue中会通过组件嵌套或者路由来引用其 ...
- WPF 设置第二次打开程序直接弹出第一次打开的程序
激活已经打开窗口函数[DllImport("user32.dll")]private static extern bool SetForegroundWindow(IntPtr h ...
- 如何从零开始实现TDOA技术的 UWB 精确定位系统(6)
这是一个系列文章<如何从零开始实现TDOA技术的 UWB 精确定位系统>第6部分. 重要提示(劝退说明): Q:做这个定位系统需要基础么? A:文章不是写给小白看的,需要有电子技术和软件编 ...
- kubernetes ingress网站发布
ingress网站发布 单域名 # 1.创建nginx pod 名称: nginx-nodeport.yaml cat nginx-nodeport.yaml apiVersion: v1 kind: ...
- nginx重载流程nginx请求处理流程nginx单进程和多进程
nginx重载流程 首先nginx会向master进程发送HUP信号[reload命令] master进程校验配置语法是否正确 master进程打开新的监听端口 master进程用心配置启动新的wor ...
- web服务器 传统开发和前后端分离开发 服务器相关概念
web服务器 Web服务器一般指的是网站服务器,是指驻留因特网上某一台或N台计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,目前最主流的三个Web服务器是Apache. Nginx . ...
- kettle从入门到精通 第四十五课 ETL之 kettle redis
1.kettle 9.3/9.4 spoon客户端中默认是没有redis步骤的,首先想到在kettle的插件市场进行下载redis步骤. 2.可能因为网络原因,直接下载失败了.索性放弃redis原有插 ...
- 找不到 .NETFramework,Version=v5.0 的引用程序集。要解决此问题,请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序。
找不到 .NETFramework,Version=v5.0 的引用程序集.要解决此问题,请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序. visual studio 2019 ...