• 力扣题目汇总(最长连续递增序列,旋转图像(中等),宝石与石头)


    最长连续递增序列

    1.题目描述

    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题目描述

    1. 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。

      J 中的字母不重复,JS中的所有字符都是字母。字母区分大小写,因此"a""A"是不同类型的石头。

      示例 1:

      输入: J = "aA", S = "aAAbbbb"
      输出: 3
      

      示例 2:

      输入: J = "z", S = "ZZ"
      输出: 0
      

      注意:

      • SJ 最多含有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
            
    

    ```有更加好的思路,或者解题方法评论区留言谢谢``

  • 相关阅读:
    第1章:路线图
    第0章:战胜恐惧和懊悔
    c++ 变量 定义 声明
    两个无符号数相减 可以得到负数
    c++ cast operator(类型转换操作符)
    C++中static 的使用方式,以及与c中的static的区别
    重载overload 重写override 重定义redefining
    用到位运算的题目
    C++ 虚函数表解析
    虚函数 动态绑定 实现方式是:虚函数表
  • 原文地址:https://www.cnblogs.com/pythonywy/p/10910564.html
Copyright © 2020-2023  润新知