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

    最长连续递增序列

    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
            
    

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

  • 相关阅读:
    LeetCode 83. Remove Duplicates from Sorted List (从有序链表中去除重复项)
    LeetCode 21. Merge Two Sorted Lists (合并两个有序链表)
    LeetCode 720. Longest Word in Dictionary (字典里最长的单词)
    LeetCode 690. Employee Importance (职员的重要值)
    LeetCode 645. Set Mismatch (集合不匹配)
    LeetCode 500. Keyboard Row (键盘行)
    LeetCode 463. Island Perimeter (岛的周长)
    115.Distinct Subsequences
    55.Jump Game
    124.Binary Tree Maximum Path Sum
  • 原文地址:https://www.cnblogs.com/pythonywy/p/10910564.html
Copyright © 2011-2022 走看看