ここにディレクトリのタイトルを書きます
1.LCS 01.プラグインのダウンロード
シンプル
Xiaokou は、VS コード用のプラグインをインストールして使用する予定です。初期状態では、1 分あたり 1 つのプラグインのダウンロードを完了できる帯域幅があります。次の 2 つの戦略のいずれかが 1 分ごとに選択されるとします。
現在の帯域幅を使用してプラグインをダウンロードする
帯域幅を 2 倍にする (したがって、ダウンロードされる数も 2 倍になります)プラグイン)< a i=4> n 個のプラグインをダウンロードするのにかかる最小時間分の間、Xiaokou に戻ってください。 注: ダウンロードされたプラグインの実際の数は n を超える場合があります
例 1:
入力: n = 2
出力: 2
説明: 次の 2 つの解決策。 2 分以内に 2 つのプラグインをダウンロードできる
オプション 1: 最初の 1 分間で帯域幅が 2 倍になり、1 分あたり 2 つのプラグインをダウンロードできる帯域幅になり、2 番目の分で 2 つのプラグインをダウンロードできます
オプション 2: 最初の 1 分で 1 つのプラグインをダウンロードし、2 番目の分で 1 つのプラグインをダウンロードします
例 2:
入力: n = 4
出力: 3
説明: 少なくとも 3 が必要です4 つのプラグインのダウンロードを完了するには、次の解決策の 1 つが考えられます。最初の 1 分間で帯域幅が 2 倍になり、1 分あたり 2 つのプラグインをダウンロードできる帯域幅になります。 2 分目、3 分目に 2 つのプラグインがダウンロードされます。
問題解決のアイデア
ロジックは次のようになります。ダウンロードに 2 分かかる場合、ダウンロードが完了するまでに 2 分 + 1 分かかることは間違いありません。ダウンロードに4分かかるとすると、2倍+ダウンロード1分で確実に2倍になります。したがって、2 倍にすることが常に最適解になります。つまり、 2 倍になります。
class Solution:
def leastMinutes(self, n: int) -> int:
time_count = 0
width = 1
while n > width:
width = width * 2
time_count = time_count + 1
time_count = time_count + 1
return time_count
2. 数値のリストが与えられた場合、リスト内のすべての 0 を右に移動してください。
数値のリストが与えられた場合、リスト内のすべての 0 を右に移動します。
たとえば、move_zeros([1, 0, 1, 2, 0, 1, 3]) の場合、期待される戻り結果は次のとおりです: [1, 1, 2, 1, 3, 0, 0]
def test(nums):
fast = 0
slow = 0
while fast < len(nums):
if nums[fast]:
nums[slow], nums[fast] = nums[fast], nums[slow]
slow += 1
fast += 1
return nums
nums = [1, 0, 1, 2, 0, 1, 3]
print(test(nums))
3. 文字列の先頭と末尾のスペースを削除するには、trim() 関数を実装します (strip() メソッドは使用できません)。
タイトル: 文字列の先頭と末尾のスペースを削除する Trim() 関数を実装します (strip() メソッドは使用できません)
例:
1. 文字列が空の場合は、trim(' ') を入力します。期待される戻り結果は ''
です。 2. 文字列の先頭と末尾のスペースの数が1 より大きい場合は、trim(' a bc ') と入力してください。期待される戻り結果は 'a bc'です。
def trim(super):
a = 0
b = 0
for i in range(len(super)):
if super[i] == ' ':
a += 1
else:
break
for i in range(len(super)):
if super[-(i + 1)] == ' ':
b += 1
else:
break
print(super[a:-b])
trim(' 23 2 1231 123 ')