0209leetcodeは5つのPythonの質問をブラシします

剣はoffer60を指します

タイトルの説明:
地面にn個のサイコロを投げ、すべてのサイコロの上側のポイントの合計はsです。nを入力して、sのすべての可能な値の確率を出力します。
答えを返すには、浮動小数点数の配列を使用する必要があります。ここで、i番目の要素は、n個のサイコロで投げることができる点のセットの中でi番目に小さい確率を表します。

例:
ここに画像の説明を挿入
回答:

class Solution:
    def dicesProbability(self, n: int) -> List[float]:
        dp = [ [0 for _ in range(6*n+1)] for _ in range(n+1)]
        for i in range(1,7):
            dp[1][i] = 1

        for i in range(2,n+1):
            for j in range(i,i*6+1):
                for k in range(1,7):
                    if j >= k+1:
                        dp[i][j] +=dp[i-1][j-k]
        res = []
        for i in range(n,n*6+1):
            res.append(dp[n][i]*1.0/6**n)
        return res

剣はoffer61を指します

トピックの説明:
トランプからランダムに5枚のカードを引いて、それがストレートかどうか、つまり5枚のカードが連続しているかどうかを判断します。2〜10は数字そのもの、Aは1、Jは11、Qは12、Kは13、大小の王は0であり、任意の数と見なすことができます。Aは14と見なすことはできません。

例:
ここに画像の説明を挿入
回答:

class Solution:
    def isStraight(self, nums: List[int]) -> bool:
        nums.sort()
        numZeros=nums.count(0)
        if len(set(nums[numZeros:]))<len(nums[numZeros:]):
            return False
        return nums[-1]-nums[numZeros]<=4

剣はoffer62を指します

タイトルの説明:
0,1、···、n-1これらのn個の数字は0から始まり、円の中に配置され、m番目の数字が円から削除されるたびに(削除後、カウントは次から始まります)数)。円に残っている最後の番号を見つけます。
たとえば、0、1、2、3、4の5つの数字は円を形成します。0から3番目の数字を削除するたびに、削除される最初の4つの数字は2、0、4、1になります。最後に残りの数は3です。

例:
ここに画像の説明を挿入
回答:

class Solution:
    def lastRemaining(self, n: int, m: int) -> int:
        if n<1 or m<0:
            return -1
        last=0
        for i in range(2,n+1):
            last=(last+m)%i
        return last

剣はoffer65を指します

トピックの説明:
2つの整数の合計を求める関数を記述します。4つの算術記号「+」、「-」、「*」、および「/」は、関数本体で使用しないでください。

例:
ここに画像の説明を挿入
回答:

class Solution:
    def add(self, a: int, b: int) -> int:
        while b:
            result = (a ^ b) & 0xffffffff
            carry = ((a & b) << 1) & 0xffffffff
            a = result
            b = carry
        if a <= 0x7fffffff:
            result = a
        else:
            result = -((a - 1) ^ 0xffffffff)
        return result  

剣はoffer67を指します

タイトルの説明:
文字列を整数に変換する関数StrToIntを記述しますatoiなどのライブラリ関数は使用できません。
まず、関数は、最初の非スペース文字が見つかるまで、必要に応じて不要な開始スペース文字を破棄します。
最初に見つかった空でない文字が正または負の記号の場合、この記号を整数の記号と同じ数の連続する数字と組み合わせます。最初の空でない文字が数値の場合は、次のように直接結合されます。整数を形成する次の連続した数字。
文字列の有効な整数部分に加えて、余分な文字が存在する場合もあります。これらの文字は無視できます。関数に影響を与えることはありません。
注:文字列の最初の非スペース文字が有効な整数文字でない場合、文字列が空の場合、または文字列に空白文字のみが含まれている場合は、関数を変換する必要はありません。
いずれの場合も、関数が有効な変換を実行できない場合は、0を返します。

例:
ここに画像の説明を挿入
回答:

class Solution:
    def strToInt(self, str: str) -> int:
        str = str.strip()                      # 删除首尾空格
        if not str: 
            return 0                   # 字符串为空则直接返回
        res, i, sign = 0, 1, 1
        int_max, int_min, bndry = 2 ** 31 - 1, -2 ** 31, 2 ** 31 // 10
        if str[0] == '-': 
            sign = -1            # 保存负号
        elif str[0] != '+': 
            i = 0              # 若无符号位,则需从 i = 0 开始数字拼接
        for c in str[i:]:
            if not '0' <= c <= '9' : 
                break     # 遇到非数字的字符则跳出
            if res > bndry or res == bndry and c > '7': 
                return int_max if sign == 1 else int_min # 数字越界处理
            res = 10 * res + ord(c) - ord('0') # 数字拼接
        return sign * res


おすすめ

転載: blog.csdn.net/yeqing1997/article/details/113675705