力扣題目彙總(最長連續遞增序列,旋轉圖像(中等),寶石與石頭)

最長連續遞增序列

1.題目描述

  1. 給定一個未經排序的整數數組,找到最長且連續的的遞增序列。python

    示例 1:數組

    輸入: [1,3,5,4,7]
    輸出: 3
    解釋: 最長連續遞增序列是 [1,3,5], 長度爲3。
    儘管 [1,3,5,7] 也是升序的子序列, 但它不是連續的,由於5和7在原數組裏被4隔開。

    示例 2:app

    輸入: [2,2,2,2,2]
    輸出: 1
    解釋: 最長連續遞增序列是 [2], 長度爲1。

    注意:數組長度不會超過10000。code

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 度。leetcode

說明:字符串

你必須在原地旋轉圖像,這意味着你須要直接修改輸入的二維矩陣。請不要使用另外一個矩陣來旋轉圖像。get

示例 1:io

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

原地旋轉輸入矩陣,使其變爲:
[
  [7,4,1],
  [8,5,2],
  [9,6,3]
]

示例 2:for循環

給定 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

`有更加好的思路,或者解題方法評論區留言謝謝

相關文章
相關標籤/搜索