Leetcode题解 0014期

最近事情也是越来越多,晚上吃过晚饭之后貌似会有一段时间头晕,不知道是不是因为高血压或者高血脂所造成的,我还是应该坚持晚饭之后的运动,虽然我现在还只是一个学生而已,但是已经有一些老年病了(棒读),反正最近刷题速度会稍微降一下,大概是每日三题的样子。

0048题 旋转图像【Rotate Image】

题目:
给定一个 n × n 的二维矩阵表示一个图像。
将图像顺时针旋转 90。
说明:
你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

示例:

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

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

给定 matrix =
[
  [ 5, 1, 9,11],
  [ 2, 4, 8,10],
  [13, 3, 6, 7],
  [15,14,12,16]
], 

原地旋转输入矩阵,使其变为:
[
  [15,13, 2, 5],
  [14, 3, 4, 1],
  [12, 6, 8, 9],
  [16, 7,10,11]
]

说是图像实为矩阵,题目相对严谨

除Robust和题目说明以外无需注意太多

解题思路:
外面转圈,里面也得转圈,但是要注意题目要求是 O ( 1 ) 的空间复杂度,所以需要额外注意,这里post代码

class Solution:
    def rotate(self, matrix):
        n = len(matrix)
        if n == 0 or n == 1: return
        for i in range(0, (n+1)//2):
            for j in range(0, n//2):
                tmp = matrix[i][j]
                matrix[i][j] = matrix[n-1-j][i]
                matrix[n-1-j][i] = matrix[n-1-i][n-1-j]
                matrix[n-1-i][n-1-j] = matrix[j][n-1-i]
                matrix[j][n-1-i] = tmp

在看解答的时候发现最快那个方法所使用的Python真是出神入化,这里refer一下,我真的没有太学会Python啊,很多东西都是套着Python皮的C++,没办法谁叫我从初中的时候就开始使用后者了呢……

class Solution:
    def rotate(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: void Do not return anything, modify matrix in-place instead.
        """
        length = len(matrix)
        temp = [[matrix[length-1-i][j] for i in range(length)] for j in range(length)]
        for i in range(length):
            matrix[i] = temp[i]

0049题 字母异位词分组【Group Anagrams】

题目:
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
说明:

  • 所有输入均为小写字母。
  • 不考虑答案输出的顺序。

示例:

输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

题目相对严谨

除Robust以外无需注意太多

解题思路:
emmm,直接自定义排序,感觉应该是这道题最快的解法,这里先放上直观的solution code

class Solution:
    def groupAnagrams(self, strs):
        d = dict()
        for s in strs:
            tmp = "".join(sorted(list(s)))
            if tmp in d:
                d[tmp].append(s)
            else:
                d[tmp] = [s]
        return list(d.values())

0050题 Pow(x, n)【Pow(x, n)】

题目:
实现 pow(x, n) ,即计算 x 的 n 次幂函数。、

说明:

  • -100.0 < x < 100.0
  • n 是 32 位有符号整数,其数值范围是 [ 2 31 , 2 31 1 ]

示例:

输入: 2.00000, 10
输出: 1024.00000

输入: 2.10000, 3
输出: 9.26100

输入: 2.00000, -2
输出: 0.25000

题目相对严谨

经典题目除Robust以外无需注意太多,输出格式是否注意一下不确定

解题思路:
快速幂的经典题目,不解释就是干。

(话说世界杯开始了喂╮(╯▽╰)╭

猜你喜欢

转载自blog.csdn.net/bright_silmarillion/article/details/80697598