leetcode -- 旋转矩阵相关问题

给定一个 × n 的二维矩阵表示一个图像。

将图像顺时针旋转 90 度。

说明:

你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

示例 1:

给定 matrix =
[
  [1,2,3],
  [4,5,6],
  [7,8,9]
],

原地旋转输入矩阵,使其变为:
[
  [7,4,1],
  [8,5,2],
  [9,6,3]
]

解题思路:先写出其转置矩阵,然后每行列表反转

 1 class Solution:
 2     def rotate(self, matrix: List[List[int]]) -> None:
 3         """
 4         Do not return anything, modify matrix in-place instead.
 5         """
 6         n = len(matrix)
 7         for i in range(n):
 8             for j in range(n):
 9                 if i < j:
10                     matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
11         for i in matrix:
12             i.reverse()

给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

示例 1:

输入:
[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]思路:分为上右下左来进行
 1 class Solution:
 2     def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
 3         ret = []
 4         while matrix:
 5             ret += matrix.pop(0)
 6             if matrix and matrix[0]:
 7                 for i in matrix:
 8                     ret.append(i.pop())
 9             if matrix:
10                 ret += matrix.pop()[::-1]#注意翻转
11             if matrix and matrix[0]:
12                 for i in matrix[::-1]:
13                     ret.append(i.pop(0))
14         return ret

原文地址:https://www.cnblogs.com/hengw/p/10467192.html

时间: 2024-11-10 01:09:57

leetcode -- 旋转矩阵相关问题的相关文章

leetcode sum相关算法题

1. Two Sum(https://oj.leetcode.com/problems/two-sum/) 解题思路: 解法一: 暴力,O(n2)时间复杂度,TLE 解法二:利用hash, 记录下数组中每个值对应的下标,再遍历一遍数组,通过查看target-num[i]的值是否在map中来确定另一个数值.时间复杂度O(n) 解法三:对num数组排序,O(nlog(n)), 然后左右夹逼O(n). 但这道题要求记录下标,故这个方法行不通. python代码如下: 1 def twoSum(self

Leetcode | Parentheses 相关

Generate Parentheses Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. For example, given n = 3, a solution set is: "((()))", "(()())", "(())()", "()(())", "

Leetcode回溯相关题目Python实现

1.46题,全排列 https://leetcode-cn.com/problems/permutations/ class Solution(object): def permute(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ n = len(nums) results = [] def backtrack(first = 0): if first ==

LeetCode: Palindrome 回文相关题目

LeetCode: Palindrome 回文相关题目汇总 LeetCode: Palindrome Partitioning 解题报告 LeetCode: Palindrome Partitioning II 解题报告 Leetcode:[DP]Longest Palindromic Substring 解题报告 LeetCode: Valid Palindrome 解题报告

LeetCode:二叉树相关应用

LeetCode:二叉树相关应用 基础知识 617.归并两个二叉树 题目 Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not. You need to merge them into a new binary tree. The merge ru

Leetcode 与树(TreeNode )相关的题解测试工具函数总结

LeetCode收录了许多互联网公司的算法题目,被称为刷题神器.最近在剑指Offer上也刷了一些题目,发现涉及到数据结构类的题目,比如说"树"."链表"这种题目,如果想在本地IDE进行测试,除了完成题目要求的算法外,还需要写一些辅助函数,比如树的创建,遍历等,由于这些函数平时用到的地方比较多,并且也能加深对常用数据结构的理解,这里将Leetcode中与树(TreeNode)相关题目会用到的测试辅助函数做一个总结. 代码文件说明 LeetCode 剑指Offer在线编

【Leetcode解题报告】单链表结点删除相关问题

Leetcode 203 Remove Linked List Elements 问题描述 Remove all elements from a linked list of integers that have value val. For example, given 1 -> 2 -> 6 -> 3 -> 4 -> 5 -> 6, val = 6. Return 1 -> 2 -> 3 -> 4 -> 5. 分析与解法 遍历链表,用一个指针

LeetCode—Reverse Bits ,1 Bit和数字的二进制情况相关

https://leetcode.com/problems/reverse-bits/ Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as0011100101111000001

leetcode中几道与维护窗口相关的问题

leetcode中有几道题使用同一个思路,大致是先维护一个窗口,每次只移动窗口左侧或者右侧的边界,然后针对这个窗口内的元素进行处理.这种方式使用两个指针,可以将问题的运行时间降到O(n)内. Longest Substring Without Repeating Characters:https://leetcode.com/problems/longest-substring-without-repeating-characters/ 这道题我们维护一个窗口,每次将右边的窗口向前移动一位.另外