咱們稱一個數 X 爲好數, 若是它的每位數字逐個地被旋轉 180 度後,咱們仍能夠獲得一個有效的,且和 X 不一樣的數。要求每位數字都要被旋轉。python
若是一個數的每位數字被旋轉之後仍然仍是一個數字, 則這個數是有效的。0, 1, 和 8 被旋轉後仍然是它們本身;2 和 5 能夠互相旋轉成對方;6 和 9 同理,除了這些之外其餘的數字旋轉之後都再也不是有效的數字。git
如今咱們有一個正整數 N
, 計算從 1
到 N
中有多少個數 X 是好數?數組
示例: 輸入: 10 輸出: 4 解釋: 在[1, 10]中有四個好數: 2, 5, 6, 9。 注意 1 和 10 不是好數, 由於他們在旋轉以後不變。
注意:app
[1, 10000]
。2.解題思路函數
# 1.if 數字中含有 3 4 7--不知足條件 # 2. elif數字所有由 0 1 8 構成--不知足條件 # 3. else:數字中含有2, 5, 6, 9--知足條件 #數字不含{3,4,7}含{2,5,6,9}
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}
給定一個數組 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]); }
#難點在原來函數上修改 #首先記錄全部val對應的索引 #而後一一刪除
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
給定兩個字符串 s 和 t,它們只包含小寫字母。
字符串 t 由字符串 s 隨機重排,而後在隨機位置添加一個字母。
請找出在 t 中被添加的字母。
示例:
輸入: s = "abcd" t = "abcde" 輸出: e 解釋: 'e' 是那個被添加的字母。
#有兩種狀況 #第一種添加的字母原來字母中沒有,這個能夠用FOR而後判斷有無進行 #第二種添加的字母原來字母中有,用計數來判斷 #爲了減小運行時間咱們要引入SET的去重
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
有更加好的思路,或者解題方法評論區留言謝謝