当我想尝试python版本时遇到了这个问题:https://leetcode.com/problems/first-missing-positive/discuss/17071/My-short-c++-solution-O( 1)-space- and -准时
我不确定为什么a[0], a[a[0]] = a[a[0]], a[0]
这个不进行交换?
>>> nums
[2, 1, 0]
>>> a = [2,1,0]
>>> a[0], a[a[0]] = a[a[0]], a[0]
>>> a
[2, 1, 0]
>>> a[0]
2
>>> a[0],a[2] = a[2], a[0]
>>> a
[0, 1, 2]
Run Code Online (Sandbox Code Playgroud)
我的猜测是a,b = b,语法的实现类似于:
tmp = a[0] (tmp = 2)
a[0] = a[a[0]] (a[0] = a[2] = 0)
a[a[0]] = tmp (a[a[0]] = a[0] = tmp = 2)
Run Code Online (Sandbox Code Playgroud)
然后我检查了C++中swap函数的实现.我对C++一无所知,但看起来这个想法是一样的:http: //www.cplusplus.com/reference/algorithm/swap/
The behavior …
Run Code Online (Sandbox Code Playgroud) 看到以下代码:
class Super:
powers = 'no power'
def __init__(self, name):
self.name = name
def add_power(self, power):
self.powers = power
dog = Super('dog')
cat = Super('cat')
dog.add_power("bark")
print (dog.powers) # print bark
print (cat.powers) # print no power
Run Code Online (Sandbox Code Playgroud)
它看起来像python的类变量独立于每个实例,因为更改狗实例的powers
变量从无权力到树皮不会影响cat实例的powers
变量
但是,通过这样做:
class Super:
powers = ["no power"]
def __init__(self, name):
self.name = name
def add_power(self, power):
self.powers.append(power)
dog = Super('dog')
cat = Super('cat')
dog.add_power("bark")
print (dog.powers) # print ['no power', 'bark']
print (cat.powers) # print ['no power', 'bark'] …
Run Code Online (Sandbox Code Playgroud) 我试图了解 Redis AOF 文件是如何工作的,并且可能会根据一些简单的 Redis AOF 文件编写一个解析器。现在我通过在 Redis 中执行这些命令生成了一个 AOF 文件:
SET firstkey firstvalue
SET secondkey secondvalue
Run Code Online (Sandbox Code Playgroud)
生成的 AOF 文件如下所示:
*2
$6
SELECT
$1
0
*3
$3
SET
$8
firstkey
$10
firstvalue
*3
$3
SET
$9
secondkey
$11
secondvalue
Run Code Online (Sandbox Code Playgroud)
我可以看到像firstkey,firstvalue和SET等,但我的关键字不太明白休息,espcially这些数字都是什么喜欢*2
,$6
手段,他们在Redis的尝试读取AOF文件,并重建数据库是如何工作的。我在网上也找不到任何文件格式的文档,因此感谢您的帮助!