zoukankan      html  css  js  c++  java
  • 算法面试经典题1-3

    #面试题1:判断两个字符串是否为相同字母的重新组合O(n2)
    #解决办法1,直接进行1个元素1个元素的进行搜索和对比
    def view(s,t):
    s=list(s)
    t=list(t)
    r=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
    else:
    r1=False
    r=r&r1
    if r:
    continue
    else:
    break
    else:
    r=False
    return r
    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])

    
    
  • 相关阅读:
    微信客服系统开发SDK使用教程-给好友发消息任务
    微信客服系统开发SDK使用教程-客户端选择微信号登陆/登出通知
    微信客服系统开发SDK使用教程-客户端退出通知
    php优秀框架codeigniter学习系列——CI_Security类学习
    php优秀框架codeigniter学习系列——CI_Output类的学习
    php优秀框架codeigniter学习系列——CI_Router类学习
    My IELTS result has come out 我的雅思成绩出来了
    Travel notes in Vietnam
    asp.net学习
    makefile简单学习
  • 原文地址:https://www.cnblogs.com/Yanjy-OnlyOne/p/12430367.html
Copyright © 2011-2022 走看看