随笔分类 -  算法

摘要:给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。 正解: class NumMatrix: def __init__(self, matrix: List[List[int]]): if not matrix or 阅读全文
posted @ 2021-03-03 19:45 小千北同学超爱写代码 阅读(87) 评论(0) 推荐(0)
摘要:、 给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。 实现 NumArray 类: NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 从索引 i  阅读全文
posted @ 2021-03-03 16:42 小千北同学超爱写代码 阅读(106) 评论(0) 推荐(0)
摘要:根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直 阅读全文
posted @ 2021-03-03 15:41 小千北同学超爱写代码 阅读(145) 评论(0) 推荐(0)
摘要:给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。 错解: 错在给矩阵赋值想的太简单了,切片是那样切没错,但是赋值不能这么赋值 class Solution: def setZeroes(self, matrix: List[List[int]] 阅读全文
posted @ 2021-03-03 00:22 小千北同学超爱写代码 阅读(55) 评论(0) 推荐(0)
摘要:给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/r 阅读全文
posted @ 2021-03-02 21:16 小千北同学超爱写代码 阅读(48) 评论(0) 推荐(0)
摘要:在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。 给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。 重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。 如果具有给定参数的res 阅读全文
posted @ 2021-03-02 21:07 小千北同学超爱写代码 阅读(82) 评论(0) 推荐(0)
摘要:给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。 正解: 这道题太焦心了! class Solution: def findDiagonalOrder(self, matrix: List[List[int]]) -> L 阅读全文
posted @ 2021-03-02 20:42 小千北同学超爱写代码 阅读(82) 评论(0) 推荐(0)
摘要:给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 正解: class Solution: def generateMatrix(self, n: int) -> [[int]]: l, r, t, b = 0, n - 阅读全文
posted @ 2021-03-02 19:44 小千北同学超爱写代码 阅读(82) 评论(0) 推荐(0)
摘要:给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 正解: class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: if not matrix: retur 阅读全文
posted @ 2021-03-02 18:45 小千北同学超爱写代码 阅读(104) 评论(0) 推荐(0)
摘要:给定一个长度为 n 的整数数组 A 。 假设 Bk 是数组 A 顺时针旋转 k 个位置后的数组,我们定义 A 的“旋转函数” F 为: F(k) = 0 * Bk[0] + 1 * Bk[1] + ... + (n-1) * Bk[n-1]。 计算F(0), F(1), ..., F(n-1)中的最 阅读全文
posted @ 2021-03-02 17:25 小千北同学超爱写代码 阅读(76) 评论(0) 推荐(0)
摘要:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 正解: class Solution: def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in- 阅读全文
posted @ 2021-02-28 21:54 小千北同学超爱写代码 阅读(72) 评论(0) 推荐(0)
摘要:给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作。 操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增加 1。 在执行给定的一系列操 阅读全文
posted @ 2021-02-27 14:33 小千北同学超爱写代码 阅读(50) 评论(0) 推荐(0)
摘要:包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/p 阅读全文
posted @ 2021-02-27 14:10 小千北同学超爱写代码 阅读(79) 评论(0) 推荐(0)
摘要:给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行 正解: 之前写错了是因为没有正确理解第k行,在杨辉三角里是从0行开始算起的;还有就是,index==0时原来返回的是[[1]]而不是[1],是因为没有正确读懂题,题目要求返回的是第k行的值,而不是杨辉三角本身。 class Solu 阅读全文
posted @ 2021-02-27 13:57 小千北同学超爱写代码 阅读(56) 评论(0) 推荐(0)
摘要:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 正解:错位相加法 class Solution: def generate(self, numRows: int) -> List[List[int]]: if numRows==0: return [] res=[[1]] 阅读全文
posted @ 2021-02-27 13:49 小千北同学超爱写代码 阅读(71) 评论(0) 推荐(0)
摘要:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 正解: 遍历数组,遇见0就弹出并且在数组后加0,由于数组长度会变化,所以重新定义idx,当有元素弹出后(从前往后遍历,弹出的是第一个元素),那么下一次继续遍历新第一个元素(i-z)(本来该遍历的位置减去( 阅读全文
posted @ 2021-02-27 13:34 小千北同学超爱写代码 阅读(47) 评论(0) 推荐(0)
摘要:给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。 我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。 来源:力扣(LeetCode)链接:https: 阅读全文
posted @ 2021-02-27 00:55 小千北同学超爱写代码 阅读(70) 评论(0) 推荐(0)
摘要:给定一个长度为 n 的 非空 整数数组,每次操作将会使 n - 1 个元素增加 1。找出让数组所有元素相等的最小操作次数。 哈哈哈评论第一说,55个民族加分相当于汉族减分哈哈哈哈哈 正解: class Solution: def minMoves(self, nums: List[int]) -> 阅读全文
posted @ 2021-02-26 22:08 小千北同学超爱写代码 阅读(40) 评论(0) 推荐(0)
摘要:给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。 h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。且其余的 N - h 篇论 阅读全文
posted @ 2021-02-25 00:41 小千北同学超爱写代码 阅读(90) 评论(0) 推荐(0)
摘要:今天做的题都是在一个不按顺序排列的自然数数组里搜寻出现了2次,没出现的数字等,而且还有复杂度要求 如果是数组有顺序,直接二分就可以了 但是没有顺序的数组,如果先排序,再二分,复杂度就很高了,因为排序就很费劲 所以今天知道的一个惊为天人的方法就是【把数组中的自然数当作下标来看】,但是要注意的是【覆盖原 阅读全文
posted @ 2021-02-25 00:02 小千北同学超爱写代码 阅读(60) 评论(0) 推荐(0)