雙指針python
s = 'abacbc'
i =0
res =[]
dic = dict(zip(s,[i for i in range(len(s))]))
p1 = 0
while p1<len(s):
temp = s[p1]
start = p1
p2 = dic[s[p1]]
while p1 != p2:
for j in range(p1,p2):
if s[j]!= temp:
p2 = max(p2,dic[s[j]])
p1 += 1
break
p1 += 1
res.append(p2-start+1)
p1 = p1+1
print(','.join([str(i) for i in res]))
複製代碼
def AUC(label, pred):
pos = [i for i in range(len(label)) if label[i] == 1]
neg = [i for i in range(len(label)) if label[i] == 0]
auc = 0
for i in pos:
for j in neg:
if pred[i] > pred[j]:
auc += 1
elif pred[i] == pred[j]:
auc += 0.5
return auc / (len(pos)*len(neg))
if __name__ == "__main__":
n = int(input())
label = []
pred = []
for i in range(n):
a1,a2 = list(map(float,input().split()))
label.append(a1)
pred.append(a2)
print("{:.2}".format(AUC(label,pred)))
複製代碼
if __name__ == "__main__":
import sys
try:
while True:
line = sys.stdin.readline().strip()
if line == '':
break
n = len(line)
next = [0]*(len(line)+1)
next[0] = -1
j = 0
k = -1
while j< len(line):
if k==-1 or line[k] == line[j]:
k +=1
j +=1
next[j] =k
else:
k = next[k]
if next[n] and n % (n-next[n])==0:
print("True")
else:
print("False")
except:
pass
複製代碼
# 給定兩條單向鏈表A,B. 求這兩條鏈表是否相交, 若相交, 給出公共節點
class Node:
def __init__(val, next):
self.val = val
self.next = next
def find(A:Node, B:Node):
if A and B:
return None
Ahead = A
Bhead = B
temp_set = set()
res = []
while Ahead and Bhead:
if Ahead in temp_set:
res.append(Ahead)
else:
temp_set.add(Ahead)
Ahead = Ahead.next
if Bhead in temp_set:
res.append(Bhead)
else:
temp_set.add(Bhead)
Bhead = Bhead.next
if res==[]:
return None
else:
return res
複製代碼
import numpy as np
from collections import Counter
class knn:
def __init__(k):
self.k = k
def pred(data, label, test):
dislist = [dis(test,i)for i in data][:k]
c = Counter(dislist)
return c.most_comment()
複製代碼
複製代碼
複製代碼