Classical algorithm interview questions 1-3

 

 

# 1 is inscribed: determining whether two strings is recombined same letter O (N2)
# 1 solution, directly search an element elements 1 and Comparative
DEF View (S, T):
S = List (S)
T = List (T)
R & lt True =
R1 = False
IF len (S) == len (T):
for I in Range (len (S)):
for J in Range (len (T)):
IF S [I] == T [J]:
t.remove (T [J])
R1 = True
BREAK
the else:
R1 = False
R & lt R1 = R & lt &
IF R & lt:
Continue
the else:
BREAK
the else:
R & lt = False
return R & lt
print(view("anangem","naangme"))

#解决方法2,使用排序的思想,直接对字符串进行排序操作即可
def valid_anagram(s,t):
ss=list(s)
tt=list(t)
ss.sort()
tt.sort()
return ss==tt
print(valid_anagram("anangem","naangme"))

#解决方法3,使用sorted函数,直接返回一个新列表O(nlogn)
def v3(s,t):
return sorted(list(s))==sorted(list(t))
print(v3("anangem","naangme"))

#解决方法4,统计字母数目,技计数排序O(n)
def v4(s,t):
d1={}
d2={}
for ch in s:
d1[ch]=d1.get(ch,0)+1 #开始统计数目进行比较
for ch in t:
d2[ch]=d2.get(ch,0)+1
return d1==d2
print(v4("anangem","naangme"))

#面试题目2,直接在二维列表中一目标元素
#解决方法1:直接一个一个查找摸一个元素,O(mn)
def search(matrx,target):
for line in matrx:
if target in line:
return True
return False
import numpy
x=[[1,2,3],[4,5,6]]
print(x)
print(search(x,100))

#解决方法2:先对列表进行排序,再用二分查找
def search2(matrx,target):
h=len(matrx)
if h==0:
return False
w=len(matrx[0])
if w==0:
return False
left=0
right=h*w-1
while left<=right:
mid = (left + right) // 2
row = mid // w
column = mid % w
if matrx[row][column]==target:
return True
elif matrx[row][column]<target:
left=mid+1
elif matrx[row][column]>target:
right=mid-1
else:
return False
print(x)
print(search2(x,8))

#面试题3:在列表中查找两个数的和为某一输入数的两个数索引
#解决办法1:使用循环进行搜索
def cha(nums,target):
n=len(nums)
for i in range(n):
num1=target-nums[i]
m=nums[i]
nums.remove(nums[i])
if num1 in nums:
return (i,1+nums.index(num1))
else:
nums.insert(i,m)
print(cha([3,2,4],6))

#解决办法2:使用双层循环进行搜索
def cha2(nums,target):
n=len(nums)
for i in range(n):
for j in range(i):
if nums[i]+nums[j]==target:
return sorted([i,j])

Guess you like

Origin www.cnblogs.com/Yanjy-OnlyOne/p/12430367.html