力扣題目彙總(旋轉數字,移除元素,找不一樣)

旋轉數字

1.題目描述

  1. 咱們稱一個數 X 爲好數, 若是它的每位數字逐個地被旋轉 180 度後,咱們仍能夠獲得一個有效的,且和 X 不一樣的數。要求每位數字都要被旋轉。python

    若是一個數的每位數字被旋轉之後仍然仍是一個數字, 則這個數是有效的。0, 1, 和 8 被旋轉後仍然是它們本身;2 和 5 能夠互相旋轉成對方;6 和 9 同理,除了這些之外其餘的數字旋轉之後都再也不是有效的數字。git

    如今咱們有一個正整數 N, 計算從 1N 中有多少個數 X 是好數?數組

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

    注意:app

    • 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 的元素,返回移除後數組的新長度。code

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

元素的順序能夠改變。你不須要考慮數組中超出新長度後面的元素。element

示例 1:leetcode

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

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

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

示例 2:rem

給定 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題目描述

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

字符串 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

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

相關文章
相關標籤/搜索