最近事情也是越来越多,晚上吃过晚饭之后貌似会有一段时间头晕,不知道是不是因为高血压或者高血脂所造成的,我还是应该坚持晚饭之后的运动,虽然我现在还只是一个学生而已,但是已经有一些老年病了(棒读),反正最近刷题速度会稍微降一下,大概是每日三题的样子。
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和题目说明以外无需注意太多
解题思路:
外面转圈,里面也得转圈,但是要注意题目要求是
的空间复杂度,所以需要额外注意,这里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.00000, 10
输出: 1024.00000
输入: 2.10000, 3
输出: 9.26100
输入: 2.00000, -2
输出: 0.25000
题目相对严谨
经典题目除Robust以外无需注意太多,输出格式是否注意一下不确定
解题思路:
快速幂的经典题目,不解释就是干。
(话说世界杯开始了喂╮(╯▽╰)╭