ボタンのトピックの要約ステイ(回転・デジタルは、異なる検索し、要素を削除します)

ローテーションデジタル

1.タイトル説明

  1. 私たちは、番号を呼び出し、Xは、各桁は個別に180度回転だ場合、我々はまだ有効とXと別の番号を取得することができ、かなりの数です。これは、各桁が回転しなければならない必要です。

    各桁の数であるか、デジタルスチル後に回転した場合、この番号が有効です。0,1、および8は、それ自体の後にまだ回転され、2及び5が互いにに回転させることができる;同様に図6及び図9に示すように、これらは他の図よりも回転数の後、もはや有効であることを除いて。

    私たちは今、正の整数持つNから算出し、1ためにNX番号を持っているが、どのくらいのかなりの数ありますか?

    示例:
    输入: 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を、あなたがする必要があります置くに等しいすべての値削除するヴァル要素を除去した後、配列の新しい長さを返します。

スペースの余分な配列を使用しないでください、あなたがする必要が入力配列の場所を変更し、使用の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は、小文字のみが含まれています、。

文字列トン文字列で並び替えランダム、およびランダムな位置に文字を追加します。

見つけるしてくださいトンの文字がに追加されます。

例:

输入:
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
    

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

おすすめ

転載: www.cnblogs.com/pythonywy/p/10932640.html