返回顶部
首页 > 资讯 > 后端开发 > Python >Python编程面试前要解决的算法有哪些
  • 621
分享到

Python编程面试前要解决的算法有哪些

2023-06-16 06:06:41 621人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python编程面试前要解决的算法有哪些”,在日常操作中,相信很多人在Python编程面试前要解决的算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python编程面试前要解决的算法

这篇文章主要介绍“python编程面试前要解决的算法有哪些”,在日常操作中,相信很多人在Python编程面试前要解决的算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python编程面试前要解决的算法有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

为什么练习算法是关键?

别像我刚开始解决问题时那样天真。尽管我认为时不时地破解几个算法很有趣,但我从来没有花太多时间去实践,只为解决问题,其他什么都不顾,可能有时候马马虎虎解决了问题,但不明白为什么这样。对于我自己,我一直在想,在一天结束时,整天求解算法有点太呆板了,它在实际的日常工作环境中并没有实际的用途,从长远来看,它也不会给我带来多少好处。

“在求职过程中,了解如何求解算法会给你带来竞争优势”

但事实上,作为程序员,每天的工作中都会出现复杂的问题,大公司必须找到一个标准化的流程来收集求职者解决问题的洞察力和对细节技能的关注。这意味着,在求职过程中,了解如何求解算法将给你带来竞争优势,因为即使是不太出名的公司也倾向于采用类似的评估方法。

在我开始更一致地解决算法后不久,我发现有大量的资源可供实践,学习解决这些问题的最有效策略,并为面试做好心理准备。(比如牛客网,力扣,领扣等)

除了练习面试问题外,这些网站通常按公司分组算法,嵌入活跃的博客,让人们分享他们面试经验的详细总结,有时甚至提供模拟面试问题作为高级计划的一部分。

如果你一开始真的很难解决问题,千万不要失望,这是完全正常的。即使是非常有经验的Python程序员也会发现,在没有足够培训的情况下,许多算法很难在短时间内解决。

也不要失望,如果你的面试不像你预期的那样,你刚刚开始解决算法。有些人每天都会准备好几个月解决一些问题,并定期排练,然后才能敲定面试。

为了帮助您在培训过程中,下面我选择了10种算法(主要围绕字符串操作和数组),这些算法在电话编码面试中一再出现。这些问题的程度主要是相对简单的,但是很容易遇到的,所以请把它们作为一个好的起点。

字符串操作

数字颠倒

# 给定一个整数,返回颠倒之后的数字 # 数字可能是负数也可能是整数  def solution(x):     string = str(x)          if string[0] == '-':         return int('-'+string[:0:-1])     else:         return int(string[::-1])      print(solution(-289)) print(solution(123))  Output: -132 543

平均单词长度

# 对于给定的句子,返回平均单词长度。 # 请记住首先删除标点符号。  sentence1 = "Hi all, my name is Tom...I am originally from Australia." sentence2 = "I need to work very hard to learn more about alGorithms in Python!"  def solution(sentence):     for p in "!?',;.":         sentence = sentence.replace(p, '')     Words = sentence.split()     return round(sum(len(word) for word in words)/len(words),2)      print(solution(sentence1)) print(solution(sentence2))  Output: 4.2 4.08

要求您使用字符串应用一些简单计算的算法非常普遍,因此熟悉诸如.replace()和.split()之类的方法非常重要,在这种情况下,这些方法有助于我删除不需要的字符并创建单词列表,其长度很容易测量和求和。

添加字符串

# 给定两个表示为字符串的非负整数num1和num2,返回num1和num2之和。 # 您不得使用任何内置的BigInteger库或将输入直接转换为整数。    num1 = '364' num2 = '1836'  # Approach 1:  def solution(num1,num2):     eval(num1) + eval(num2)     return str(eval(num1) + eval(num2))              print(solution(num1,num2))  #Approach3  # 给出一个长度为1的字符串,当参数是unicode对象时,ord()函数返回一个表示字符 # 的Unicode代码点的整数,或者当参数是8位字符串时,返回字节的值。  def solution(num1, num2):     n1, n2 = 0, 0     m1, m2 = 10**(len(num1)-1), 10**(len(num2)-1)      for i in num1:         n1 += (ord(i) - ord("0")) * m1          m1 = m1//10              for i in num2:         n2 += (ord(i) - ord("0")) * m2         m2 = m2//10      return str(n1 + n2) print(solution(num1, num2))  Output: 2200 2200

我发现两种方法都同样出色:第一种方法简洁明了,使用直觉式eval()方法动态评估基于字符串的输入,第二种方法巧妙地使用ord()函数来重新构建两种方法字符串作为实际数字通过其字符的Unicode代码点。如果确实要在两者之间进行选择,则我可能会选择第二种方法,因为它一开始看起来比较复杂,但在解决需要更高级的字符串操作算法时通常很方便。

找到第一个唯一的字符

#给定一个字符串,找到其中的第一个非重复字符并返回其索引。 #如果不存在,则返回-1。#注意:所有输入字符串均已小写。 #Approach 1 def solution(s):     frequency = {}     for i in s:         if i not in frequency:             frequency[i] = 1         else:             frequency[i] +=1     for i in range(len(s)):         if frequency[s[i]] == 1:             return i     return -1  print(solution('alphabet')) print(solution('barbados')) print(solution('crunchy'))  print('---')  #Approach 2 import collections  def solution(s):     # build hash map : character and how often it appears     count = collections.Counter(s) # <-- gives back a dictionary with words occurrence count                                           #Counter({'l': 1, 'e': 3, 't': 1, 'c': 1, 'o': 1, 'd': 1})     # find the index     for idx, ch in enumerate(s):         if count[ch] == 1:             return idx          return -1  print(solution('alphabet')) print(solution('barbados')) print(solution('crunchy'))  Output: 1 2 1 --- 1 2 1

同样在这种情况下,提供了两种可能的解决方案,我想如果您对算法还不熟悉,第一种方法看起来会更加熟悉,因为它是从空字典开始的简单计数器。

但是,从长远来看,理解第二种方法将对您有更多帮助,这是因为在此算法中,我仅使用collection.Counter而不是自己构建chars计数器,而是用enumerate代替了range(len(s))  ,可以帮助您更优雅地识别索引的功能。

有效回文

# 给定一个非空字符串s,您最多可以删除一个字符。判断是否可以使它回文。 # 字符串仅包含小写字母az。 s = 'sadkas' def solution(s):     for i in range(len(s)):         t = s[:i] + s[i+1:]         if t == t[::-1]: return True      return s == s[::-1]    solution(s)  Output: True

“有效回文”问题是一个真正的经典,您可能会在许多不同的情况下反复发现它。在这种情况下,任务是通过删除最多一个字符来检查天气,该字符与其相反的字符匹配。当s  ='sadkas'时,该函数通过排除'k'来返回True,我们得到的单词“ sadas”是回文。

数组

单调数组

# 给定一个整数数组,请确定该数组是否为单调。 A = [6, 5, 4, 4]  B = [1,1,1,3,3,4,3,2,4,2] C = [1,1,2,3,7]  def solution(nums):      return (all(nums[i] <= nums[i + 1] for i in range(len(nums) - 1)) or              all(nums[i] >= nums[i + 1] for i in range(len(nums) - 1)))     print(solution(A))  print(solution(B))  print(solution(C))   Output: True False True

这是另一个非常常见的问题,并且上面提供的解决方案非常优雅,因为它可以单行编写。当且仅当数组是单调递增或单调递减且为评估数组时,该数组才是单调的。上述算法利用all()函数的作用,如果iterable中的所有项目均为True,则返回True,否则返回False。如果可迭代对象为空,则all()函数还返回True。

移动零

# 给出一个数组num,编写一个函数以将所有零移动到其末尾,同时保持 # non-zero元素的相对顺序。 array1 = [0,1,0,3,12] array2 = [1,7,0,0,8,0,10,12,0,4]  def solution(nums):     for i in nums:         if 0 in nums:             nums.remove(0)             nums.append(0)     return nums  solution(array1) solution(array2)  Output: [1, 3, 12, 0, 0] [1, 7, 8, 10, 12, 4, 0, 0, 0, 0]

当您使用数组时,.remove()和.append()方法是宝贵的盟友。在此问题中,我使用它们首先删除属于原始数组的每个零,然后将其附加到同一数组的末尾。

填空白

# 给定一个包含None值的数组,用该数组中的最新non None值填充None值 array1 = [1,None,2,3,None,None,5,None]  def solution(array):     valid = 0                 res = []                      for i in nums:          if i is not None:                 res.append(i)             valid = i         else:             res.append(valid)     return res  solution(array1)   Output: [1, 1, 2, 3, 3, 3, 5, 5]

两次解决方案都必须包含边缘案例(为简单起见,在此省略)。从表面上看,这是一种易于构建的算法,但是您需要牢记要使用for循环和if语句要实现的目标,并应习惯使用None值。

匹配词和不匹配词

# 给出两个句子,返回一个数组,该数组的单词出现在一个句子中,而不是 # 另一个单词;返回一个数组,这些单词具有共同的单词。 sentence1 = 'We are really pleased to meet you in our city' sentence2 = 'The city was hit by a really heavy stORM'  def solution(sentence1, sentence2):     set1 = set(sentence1.split())     set2 = set(sentence2.split())          return sorted(list(set1^set2)), sorted(list(set1&set2))   print(solution(sentence1, sentence2))  Output: (['The','We','a','are','by','heavy','hit','in','meet','our',     'pleased','storm','to','was','you'],  ['city', 'really'])

这个问题很直观,但是算法利用了一些非常常见的集合操作,例如set(),intersection()或&和symmetric_difference()或^,它们对于使您的解决方案更加优雅非常有用。

质数数组

# 给定k个小于n的数字,返回其中的素数集 # 注意:任务是编写一个程序来打印一个间隔中的所有素数。 # 定义:质数是大于1的自然数,除1及其本身外,没有除数。  n = 35 def solution(n):     prime_nums = []     for num in range(n):         if num > 1: # all prime numbers are greater than 1             for i in range(2, num):                 if (num % i) == 0: # if the modulus == 0 is means that the number can be divided by a number preceding it                     break             else:                 prime_nums.append(num)     return prime_nums solution(n)  Output: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

我想用另一个经典问题来结束本篇文章。如果您既熟悉质数定义又知道模数运算,那么可以很容易地找到一个解决方案,即通过谷值范围(n)(modulus  operation)。

到此,关于“Python编程面试前要解决的算法有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Python编程面试前要解决的算法有哪些

本文链接: https://lsjlt.com/news/282707.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python编程面试前要解决的算法有哪些
    这篇文章主要介绍“Python编程面试前要解决的算法有哪些”,在日常操作中,相信很多人在Python编程面试前要解决的算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python编程面试前要解决的算法...
    99+
    2023-06-16
  • Python 面试中常考的编程算法题目有哪些?
    在 Python 面试中,经常会出现一些编程算法题目,这些题目是用来考察面试者对编程基础知识的掌握程度、编程思维能力、代码逻辑能力以及解决问题的能力。下面就为大家介绍一些在 Python 面试中常考的编程算法题目。 一、斐波那契数列 斐波...
    99+
    2023-09-18
    面试 编程算法 git
  • “PHP编程面试中,路径算法问题的解决方法有哪些?”
    PHP编程面试中,路径算法问题的解决方法有哪些? 在PHP编程面试中,路径算法问题是一个经常被问到的问题。路径算法问题涉及到从一个点到另一个点的最短路径或最快路径问题。在本文中,我们将探讨解决路径算法问题的几种方法,并提供一些PHP代码示例...
    99+
    2023-08-19
    path 编程算法 面试
  • Python算法面试题有哪些
    本篇内容介绍了“Python算法面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!25匹马,有一条只能5匹马比赛的赛道,我们无法计时...
    99+
    2023-06-02
  • ASP面试中需要掌握的path编程算法知识有哪些?
    随着互联网技术的不断发展和普及,越来越多的企业开始使用ASP语言来开发网站和应用程序。在ASP面试中,掌握path编程算法知识是非常重要的,因为这涉及到网站和应用程序的路径规划、搜索和优化等方面。本文将介绍ASP中需要掌握的path编程算...
    99+
    2023-08-24
    面试 path 编程算法
  • web前端面试常见算法题有哪些
    这篇“web前端面试常见算法题有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“web前...
    99+
    2024-04-02
  • 面试题:Java 开发者需要了解哪些常见的编程算法?
    Java 开发者需要了解哪些常见的编程算法? 作为一名 Java 开发者,熟练掌握编程语言和框架是必要的,但是仅仅掌握这些还不足以让你成为一名优秀的开发者。在面试中,常常会被考察到对算法的掌握程度。掌握算法不仅可以帮助你更好地解决问题,提高...
    99+
    2023-10-15
    面试 异步编程 编程算法
  • path编程算法在ASP面试中的应用有哪些?
    Path编程算法在ASP面试中的应用有哪些? 在ASP面试中,Path编程算法是一个非常重要的话题。Path编程算法是一种基于图论的算法,用于寻找两个节点之间的最短路径。这种算法可以用于很多领域,如网络路由、游戏AI、机器人导航等等。在AS...
    99+
    2023-08-24
    面试 path 编程算法
  • Laravel 中的编程算法有哪些需要了解的?
    Laravel 是一款流行的 PHP 框架,它为 Web 开发者提供了许多便利。在 Laravel 中,有许多编程算法是需要了解的,这些算法可以帮助你更好地理解 Laravel 中的工作原理,提高你的开发效率。下面就为大家介绍一些 Lara...
    99+
    2023-08-12
    编程算法 load laravel
  • php算法面试题有哪些
    这篇文章主要介绍php算法面试题有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要...
    99+
    2023-06-14
  • web前端面试中的常见的算法问题有哪些
    这篇文章主要介绍“web前端面试中的常见的算法问题有哪些”,在日常操作中,相信很多人在web前端面试中的常见的算法问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”we...
    99+
    2024-04-02
  • ASP面试中path编程算法的重要性?
    在ASP面试中,path编程算法是一个非常重要的话题。path编程算法是一种使用路径来找到数据的技术。它可以用于许多不同的应用程序,包括Web应用程序和桌面应用程序。在这篇文章中,我们将讨论path编程算法的重要性以及如何在ASP中实现它...
    99+
    2023-08-24
    面试 path 编程算法
  • 面试官喜欢问的 PHP 容器编程算法题目有哪些?
    在 PHP 编程面试中,容器编程算法题目是一个非常重要的部分。PHP 容器是指 PHP 语言中用于存储数据的数据结构,例如数组、链表、栈、队列等。掌握容器的基本操作以及常见的算法问题,对于 PHP 开发工程师来说是非常重要的。下面是一些常...
    99+
    2023-07-21
    容器 编程算法 面试
  • Python里面的算法有哪些
    Python中常见的算法有以下几种冒泡排序算法冒泡排序算法是一种简单直观的排序算法,其原理是重复地走访需要排序的元素列表,依次比较两个相邻的元素,如果顺序错误就交换它们的位置,重复地进行直到没有相邻的元素需要交换,则元素列表排序完成。选择排...
    99+
    2024-04-02
  • PHP编程中需要了解哪些算法?
    PHP是一种非常流行的服务器端编程语言,广泛应用于Web开发、数据处理、图像处理等领域。在PHP编程中,算法是不可或缺的一部分,因为它们能够帮助开发人员更好地管理和操作数据。本文将探讨PHP编程中需要了解哪些算法,并提供一些演示代码。 ...
    99+
    2023-11-08
    编程算法 api linux
  • Python工程师需要掌握的面试题有哪些
    这篇文章主要讲解了“Python工程师需要掌握的面试题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python工程师需要掌握的面试题有哪些”吧! 1、Python有哪些特点...
    99+
    2023-06-16
  • Python协程的面试题有哪些
    这篇文章主要介绍“Python协程的面试题有哪些”,在日常操作中,相信很多人在Python协程的面试题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python协程的面试题有哪些”的疑惑有所帮助!接下来...
    99+
    2023-06-02
  • 前端的面试题都有哪些
    这篇文章给大家介绍前端的面试题都有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、标签属性中title和alt的区别答:title是设置鼠标移动到图片上时显示的内容,而alt是用...
    99+
    2024-04-02
  • web前端的面试题有哪些
    web前端的面试题有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。又到了一年中的招聘旺季的时...
    99+
    2024-04-02
  • jQuery的前端面试题有哪些
    今天小编给大家分享一下jQuery的前端面试题有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作