力扣题目汇总(最长连续递增序列,旋转图像(中等),宝石与石头)
最长连续递增序列
1.题目描述
-
给定一个未经排序的整数数组,找到最长且连续的的递增序列。
示例 1:
输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3。 尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。
示例 2:
输入: [2,2,2,2,2] 输出: 1 解释: 最长连续递增序列是 [2], 长度为1。
注意:数组长度不会超过10000。
2.解题思路
如果后者大于前者长度加1,后者小于前者长度变回1,然后重新开始循环如果后者大于前者加1
3.解题
class Solution:
def findLengthOfLCIS(self, nums: List[int]) -> int:
new_nums = nums[1:]
count = 1
len_list = []
if len(nums)==0:
return 0
else:
for a in range(len(new_nums)):
if new_nums[a] > nums[a]:
count += 1
else:
len_list.append(count)
count = 1
len_list.append(count)
return max(len_list)
旋转图像(中等)
1.题目描述
给定一个 n × n 的二维矩阵表示一个图像。
将图像顺时针旋转 90 度。
说明:
你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。
示例 1:
给定 matrix =
[
[1,2,3],
[4,5,6],
[7,8,9]
],
原地旋转输入矩阵,使其变为:
[
[7,4,1],
[8,5,2],
[9,6,3]
]
示例 2:
给定 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]
]
2.解题思路
难点:原表格修改,用太多for循环会超时
先水平翻转,再按照子列表的长度,把他变成有拥有子列表长度一样的空的列表,再里面填写值进去
3.解题
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
import copy
new_list = []
time = 0
conter = 0
matrix.reverse()
matrix_1 = copy.copy(matrix)
print(matrix)
if len(matrix) != 0: #删除值并且把值全变成空的列表
for a in range(len(matrix)):
matrix[a] = []
while len(matrix) > len(matrix_1[0]):
matrix.pop()
while len (matrix) < len(matrix_1[0]):
matrix.append([])
for b in range(len(matrix_1[0])): #填值
for c in range(len(matrix_1)):
if time != len(matrix_1):
time += 1
matrix[conter].append(matrix_1[c][b])
elif time == len(matrix_1):
time = 1
conter += 1
matrix[conter].append(matrix_1[c][b])
宝石与石头
1题目描述
-
给定字符串
J
代表石头中宝石的类型,和字符串S
代表你拥有的石头。S
中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J
中的字母不重复,J
和S
中的所有字符都是字母。字母区分大小写,因此"a"
和"A"
是不同类型的石头。示例 1:
输入: J = "aA", S = "aAAbbbb" 输出: 3
示例 2:
输入: J = "z", S = "ZZ" 输出: 0
注意:
S
和J
最多含有50个字母。J
中的字符不重复。
2.解题思路
去除J里面的值,然后再S中查找值的个数用COUNT,求和
3.解题
class Solution:
def numJewelsInStones(self, J: str, S: str) -> int:
num = 0
for i in J:
num_1 = S.count(i)
num += num_1
return num