国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python新手們,快把算法練起來

數據分析與開發 ? 來源:數據分析與開發 ? 作者:數據分析與開發 ? 2020-09-24 16:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

為什么練習算法是關鍵? 如果你是Python新手,并且打算面試頂尖公司(FAANG),聽著,你需要從現在開始就好好練習算法。 不要像我第一次練習算法時那么天真。盡管我認為從早到晚死磕算法很有趣,但是我從來沒有花過太多時間練習,甚至更少花時間去使用快捷、高效的解決方法。在我看來,我認為花一天的時間解決算法問題有點太傻了,而且在實際工作環境中很不適用,而且長期來看這也不會給我帶來多大的收益。 “知道如何解決算法問題將會成為你在找工作過程中極有競爭力的優勢” 好吧……我錯了(至少在某種程度上來說):我仍然認為花費太多時間在算法上而不注重其他技能遠遠不能讓你找到理想的工作,但是我知道作為一個程序員,復雜的問題總會自己出現在日常的工作當中,因此大公司不得不找到一個標準化的流程來收集應聘者在問題解決和細節技能關注的見解。這意味著知道如何解決算法問題將會成為在找工作的你的一個競爭優勢,甚至不那么出名的公司也傾向于采納這樣的評估方法。 那里有一整個世界 在我開始更專注地解決算法問題之后不久,我發現有很多資源可供練習、學習最有效的策略以及為面試做好充足的心理準備,比如以下幾個例子:

HackerRank:

https://www.hackerrank.com/interview/interview-preparation-kit

LeetCode:

https://leetcode.com/explore/interview/card/top-interview-questions-easy/

CodingBat :

https://codingbat.com/python

GeeksForGeeks:

https://www.geeksforgeeks.org/python-programming-language/?ref=leftbar

練習頂級的面試問題,這些網站通常會按照公司對算法問題進行分組,并且把人們分享詳細的面試經驗總結的活躍博客嵌入進去,有時也會提供模擬面試問題作為優選計劃(premium plans)的一部分。 例如,LeetCode可以通過特定的公司以及頻率篩選頂尖的面試問題。你也可以選擇自己覺得合適的試題難度(簡單、中等、困難):

來源:https://leetcode.com/problemset/all/ 那里有上百道不同的算法問題,這意味著,要做到能夠識別出常見的模式并在10分鐘以內得出有效的解決方法需要大量的時間和投入。 “如果你一開始感覺到解決這些算法問題很困難千萬不要灰心喪氣,這是很正常的事。” 如果你一開始感覺到解決這些算法問題很困難千萬不要灰心喪氣,這是很正常的事。即使有經驗的Python程序員在沒有充分的訓練之前,也會感覺到有很多算法題很難解。 如果你的面試不如預期并且你才剛開始刷題,也不要沮喪。有很多人會刷好幾個月的算法題,并且做有規律地復習才能最終拿下一場面試。 為了在你的練習過程中幫到你,我精選了10個在電話面試過程中反復出現的算法(主要是關于字符串操作和數組)。這些問題的難度大都比較容易,所以這會是一個很好的開始。 請注意我給出的每個問題的解答僅僅是許多潛在解決方法的其中之一,通常是一個蠻力解法(“Brute Force”)。因此請自主選擇你自己的解法,嘗試在運行時間和所用內存之間找到適當的平衡。

字符串處理

1. 整數逆位輸出

# Given an integer, return the integer with reversed digits.# Note: The integer could be either positive or negative. def solution(x): string = str(x) if string[0] == '-': return int('-'+string[:0:-1]) else: return int(string[::-1]) print(solution(-231))print(solution(345))Output:-132 543

這是一個預熱算法,將幫助您練習切片技巧。實際上,唯一棘手的問題是確保您考慮整數為負數的情況。我已經看到此問題以許多不同的方式呈現,但這通常有更復雜的要求。

2. 平均單詞長度

# For a given sentence, return the average word length. # Note: Remember to remove punctuation first. 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()這些方法非常熟悉,這樣才能幫助你刪除不想要的字符并且創建單詞長度容易計算和求和的單詞表。

3. 添加字符串

# Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.# You must not use any built-in BigInteger library or convert the inputs to integer directly. #Notes:#Both num1 and num2 contains only digits 0-9.#Both num1 and num2 does not contain any leading zero. num1 = '364'num2 = '1836' # Approach 1: def solution(num1,num2): eval(num1) + eval(num2) return str(eval(num1) + eval(num2)) print(solution(num1,num2)) #Approach2 #Given a string of length one, the ord() function returns an integer representing the Unicode code point of the character #when the argument is a unicode object, or the value of the byte when the argument is an 8-bit string. 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編碼將兩個字符串重構成實際的數字。如果你真的要選擇其中的一種,我傾向于選擇第二種,因為它第一眼看上去更復雜,但是通常在解決需要更高級的字符串處理和計算的“中等”和“困難”算法問題當中非常好用。 4. 第一個不同的字母

# Given a string, find the first non-repeating character in it and return its index. # If it doesn't exist, return -1. # Note: all the input strings are already lowercase. #Approach 1def 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 2import 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(s)代替創建字符計數器,并且用enumerate(s)代替了range(len(s)),enumerate(s)是一個可以幫助你更好地識別索引地址的函數。 5. 有效回文

# Given a non-empty string s, you may delete at most one character. Judge whether you can make it a palindrome.# The string will only contain lowercase characters a-z. s = 'radkar'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=’radkar’時,函數返回True,因為除去’k’之后,我們獲得單詞’radar’是一個回文序列。 數組6. 單調數組

# Given an array of integers, determine whether the array is monotonic or not.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()函數,當所有可迭代項為真,則返回True,否則返回FALSE。如果迭代對象是空,all()函數也會返回True。 7. 移動零

#Given an array nums, write a function to move all zeroes to the end of it while maintaining the relative order of #the non-zero elements. 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()的方法是“黃金組合”。在這個問題當中,我用他們首先將屬于原始數組的零移除,然后把移出的零填到同一個數組的末尾。 8. 填空

# Given an array containing None values fill in the None values with most recent # non None value in the array 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值。 9. 匹配和失匹配單詞

#Given two sentences, return an array that has the words that appear in one sentence and not#the other and an array with the words in common. 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)) # ^ A.symmetric_difference(B), & A.intersection(B) print(solution(sentence1, sentence2))Output:(['The','We','a','are','by','heavy','hit','in','meet','our','pleased','storm','to','was','you'],['city', 'really']) 這個問題非常直觀,但是該算法利用了一些非常常見的set操作,例如set(), intersection() or &以及symmetric_difference() or ^這些方法都會讓你的解題過程更漂亮。如果你是第一次見到它們,請查看一下這個網址:https://www.programiz.com/python-programming/set 10. 質數數據

# Given k numbers which are less than n, return the set of prime number among them# Note: The task is to write a program to print all Prime numbers in an Interval.# Definition: A prime number is a natural number greater than 1 that has no positive divisors other than 1 and itself. n = 35def 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_numssolution(n)Output:[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31] 我想用另外一個經典問題來結束這一部分。如果你熟悉質數的定義和模運算,就可以輕而易舉地找到遍歷range(n)的解法。 結論 本文當中我分享了10個在編程面試當中常被問到的Python算法。如果你正在準備一家知名技術公司的面試,這篇文章對你熟悉常見算法模式并且循序漸進到更復雜問題來說,是一個好的開始。順便請注意本文當中的練習(及其解決方案)只是針對Leetcode和GeekforGeeks上存在的問題稍微做了重新解釋。在這個領域我還遠非達得到一個專家的水平,因此我呈現的解決方法僅僅是指示性的。

責任編輯:xj

原文標題:在Python編程面試前需要學會的10個算法

文章出處:【微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    90

    文章

    3716

    瀏覽量

    97188
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

    90033

原文標題:在Python編程面試前需要學會的10個算法

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    1688 商品詳情 API 調用與數據解析 Python 實戰

    你想要的是 1688 商品詳情 API 的 Python 調用與數據解析實戰方案,核心是完成 API 憑證配置、接口請求(含簽名)、響應數據解析、異常處理 的全流程落地,我會提供可直接運行的代碼,并
    的頭像 發表于 02-10 11:23 ?260次閱讀

    新手學單片機,主要是玩,學什么好?

    如果你是新手想學單片機,主要是為了玩,那我真心推薦從microbit入手。第一,玩起來特別簡單。不用費勁裝什么專用軟件,直接打開瀏覽器就能用MakeCode在線編程,連下載都省了。
    的頭像 發表于 01-21 16:37 ?642次閱讀
    <b class='flag-5'>新手</b>學單片機,主要是玩,學什么好?

    物聯網新手小白,求前輩推薦一款學習用開發板

    我是新手小白,想自學物聯網和人工智能技術,希望前輩能推薦一款適合進行初級到中級知識學習、實驗和項目開發的開發板兼顧性價比,包括具體的品牌和型號。
    發表于 12-25 18:44

    沒有專利的opencv-python 版本

    所有 官方發布的 opencv-python 核心版本(無 contrib 擴展)都無專利風險——專利問題僅存在于 opencv-contrib-python 擴展模塊中的少數算法(如早期 SIFT
    發表于 12-13 12:37

    Python中借助NVIDIA CUDA Tile簡化GPU編程

    模型更高的層級來實現算法。至于如何將計算任務拆分到各個線程,完全由編譯器和運行時在底層自動處理。不僅如此,tile kernels 還能夠屏蔽 Tensor Core 等專用硬件的細節,寫出的代碼還能
    的頭像 發表于 12-13 10:12 ?1197次閱讀
    在<b class='flag-5'>Python</b>中借助NVIDIA CUDA Tile簡化GPU編程

    求大佬解答下 CSA37F72 CSA37F70等為什么在csu-ide里面找不到了

    我是新手 求大佬解答下 是有替代的嘛 還是用別的軟件
    發表于 12-09 18:41

    Termux中調試圣誕樹Python代碼

    python --version 如果輸出Python 3.x.x(比如3.11.4),說明安裝成功。 二、代碼編寫(兩種方式可選) 方式1:用Termux自帶編輯器(nano)(新手推薦) 創建并編輯
    發表于 12-09 09:02

    新手小白必看!關于A100云主機租用,你想知道的一切都在這!

    “我想租一臺A100云主機來跑我的模型,但完全不知道從何下手。”——這是我們聽到最多的來自AI新手的聲音。A100,這個聽起來就“高大上”的名詞,背后其實是一套清晰、可操作的流程。今天,我們就用
    的頭像 發表于 10-31 19:24 ?1589次閱讀
    <b class='flag-5'>新手</b>小白必看!關于A100云主機租用,你想知道的一切都在這!

    termux如何搭建python游戲

    termux如何搭建python游戲 Termux搭建Python游戲開發環境的完整指南 一、Termux基礎環境準備 Termux是一款無需root即可在安卓設備上運行的Linux終端
    發表于 08-29 07:06

    PID控制算法學習筆記資料

    用于新手學習PID控制算法
    發表于 08-12 16:22 ?7次下載

    python app不能運行怎么解決?

    ;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
    發表于 08-06 06:27

    跟老齊學Python:從入門到精通

    礎的學習者介紹一門時下比較流行、并且用途比較廣泛的編程語言,所以,本書讀起來不晦澀,并且在其中穿插了很多貌似與Python 編程無關,但與學習者未來程序員職業生涯有關的內容。 獲取完整文檔資料可下載附件哦!!!! 如果內容有幫助可以關注、點贊、評論支持一下哦~
    發表于 06-03 16:10

    智能車淺談——手把手讓車跑起來(電磁篇)

    以及高級算法就需要車友們自己去整了,主要還是方便新手上道,當然也歡迎大佬提出建議。本文以電磁四輪為例進行講解。材料準備作為剛接觸電磁車的同學,咱們要想跑起來需要四大
    的頭像 發表于 05-22 19:32 ?2847次閱讀
    智能車淺談——手把手讓車跑<b class='flag-5'>起來</b>(電磁篇)

    ?如何在虛擬環境中使用 Python,提升你的開發體驗~

    RaspberryPiOS預裝了Python,你需要使用其虛擬環境來安裝包。今天出版的最新一期《TheMagPi》雜志刊登了我們文檔負責人NateContino撰寫的一篇實用教程,幫助你入門
    的頭像 發表于 03-25 09:34 ?813次閱讀
    ?如何在虛擬環境中使用 <b class='flag-5'>Python</b>,提升你的開發體驗~

    零基礎入門:如何在樹莓派上編寫和運行Python程序?

    在這篇文章中,我將為你簡要介紹Python程序是什么、Python程序可以用來做什么,以及如何在RaspberryPi上編寫和運行一個簡單的Python程序。什么是Python程序?
    的頭像 發表于 03-25 09:27 ?2038次閱讀
    零基礎入門:如何在樹莓派上編寫和運行<b class='flag-5'>Python</b>程序?