VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
當前位置:
魔兽世界wow > 編程開發 > Python >
  • python基礎教程之力扣題目匯總(旋轉數字,移除

  • 2019-05-27 21:37 來源:未知

1.題目描述

  1. 我們稱一個數 X 為好數, 如果它的每位數字逐個地被旋轉 180 度后,我們仍可以得到一個有效的,且和 X 不同的數。要求每位數字都要被旋轉。

    如果一個數的每位數字被旋轉以后仍然還是一個數字, 則這個數是有效的。0, 1, 和 8 被旋轉后仍然是它們自己;2 和 5 可以互相旋轉成對方;6 和 9 同理,除了這些以外其他的數字旋轉以后都不再是有效的數字。

    現在我們有一個正整數 N, 計算從 1 到 N 中有多少個數 X 是好數?

    示例:
    輸入: 10
    輸出: 4
    解釋: 
    在[1, 10]中有四個好數: 2, 5, 6, 9。
    注意 1 和 10 不是好數, 因為他們在旋轉之后不變。

    注意:

    • N 的取值范圍是 [1, 10000]。
  2. 2.解題思路

    # 1.if 數字中含有 3 4 7--不滿足條件
    # 2. elif數字全部由 0 1 8 構成--不滿足條件 
    # 3. else:數字中含有2, 5, 6, 9--滿足條件
    
    #數字不含{3,4,7}含{2,5,6,9}
                

3.解題

class Solution:
    def rotatedDigits(self, N: int) -> int:
        cnt = 0
        a = {'3','4','7'}
        b = {'0','1','8'}
        c = {'2', '5', '6','9'}
        for num in range(1,N+1):
            if all(x not in a for x in str(num)) and not all(x in b for x in str(num)):
                cnt +=1
        return(cnt)  
    # 1.if 數字中含有 3 4 7--不滿足條件
    # 2. elif數字全部由 0 1 8 構成--不滿足條件 
    # 3. else:數字中含有2, 5, 6, 9--滿足條件
    
    #數字不含{3,4,7}含{2,5,6,9}
                
        

移除元素

1.題目描述

給定一個數組 nums 和一個值 val,你需要原地移除所有數值等于 val 的元素,返回移除后數組的新長度。

不要使用額外的數組空間,你必須在原地修改輸入數組并在使用 O(1) 額外空間的條件下完成。

元素的順序可以改變。你不需要考慮數組中超出新長度后面的元素。

示例 1:

給定 nums = [3,2,2,3], val = 3,

函數應該返回新的長度 2, 并且 nums 中的前兩個元素均為 2。

你不需要考慮數組中超出新長度后面的元素。

示例 2:

給定 nums = [0,1,2,2,3,0,4,2], val = 2,

函數應該返回新的長度 5, 并且 nums 中的前五個元素為 0, 1, 3, 0, 4。

注意這五個元素可為任意順序。

你不需要考慮數組中超出新長度后面的元素。

說明:

為什么返回數值是整數,但輸出的答案是數組呢?

請注意,輸入數組是以“引用”方式傳遞的,這意味著在函數里修改輸入數組對于調用者是可見的。

你可以想象內部操作如下:

// nums 是以“引用”方式傳遞的。也就是說,不對實參作任何拷貝
int len = removeElement(nums, val);

// 在函數里修改輸入數組對于調用者是可見的。
// 根據你的函數返回的長度, 它會打印出數組中該長度范圍內的所有元素。
for (int i = 0; i < len; i++) {
    print(nums[i]);
}

2.解題思路

#難點在原來函數上修改
#首先記錄所有val對應的索引
#然后一一刪除

3.解題

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        nums_del_list = list()
        cont = 0
        for a in range(len(nums)):
            if nums[a]==val:
                nums_del_list.append(a)
        for b in nums_del_list:
            del nums[b+cont]
            cont -= 1
        

            
        

找不同

1題目描述

給定兩個字符串 s 和 t,它們只包含小寫字母。

字符串 t 由字符串 s 隨機重排,然后在隨機位置添加一個字母。

請找出在 t 中被添加的字母。

示例:

輸入:
s = "abcd"
t = "abcde"

輸出:
e

解釋:
'e' 是那個被添加的字母。

2.解題思路

#有兩種情況
#第一種添加的字母原來字母中沒有,這個可以用FOR然后判斷有無進行
#第二種添加的字母原來字母中有,用計數來判斷
#為了減少運行時間我們要引入SET的去重

3.解題

class Solution:
    def findTheDifference(self, s: str, t: str) -> str:
        if len(set(t))==len(set(s)):
            for a in set(t):
                print(s.count(a))
                print(t.count(a))
                if s.count(a) != t.count(a):
                    return a
                    break
        else:
            for a in t:
                if a not in s:
                    return a
                    break
    

魔兽世界战士幻化: `有更加好的思路,或者解題方法評論區留言謝謝


相關教程