原创 LFU算法(Leetcode)

LFU: 採用LFU算法的最簡單方法是爲每個加載到緩存的快分配一個計數器.每次引用該塊時,計數器將增加1.當緩存達到容量並且有一個新塊等待插入時,系統將搜索計數器最低的塊並將其從緩存中刪除 實現: LFU的每個數據塊都有一個

原创 Python concurrent.futures模塊

Python實現多線程/多進程,大家常常會用到標準庫中的threading和multiprocessing模塊。 但從Python3.2開始,標準庫爲我們提供了concurrent.futures模塊,它提供了ThreadPoo

原创 倒序輸出一個正整數(leetcode)

給定一個正整數n,請儘可能利用遞歸實現倒序輸出 Input: 輸入一個正整數n Output: 倒序輸出正整數 number = input().rstrip('0') def output(number): i

原创 尋找峯值(leetcode)

&emps;峯值元素是指其值大於左右相鄰值的元素。 給定一個輸入數組nums,其中nums[i] ≠ nums[i+1],找到峯值元素並輸出其索引值, 你可以假設nums[-1] = nums[n] = -∞。 注意:不用擔心存

原创 青蛙跳臺階(leetcode)

 一隻青蛙一次可以跳上1級臺階,也可以跳上2級臺階。求該青蛙跳上一個n級的臺階總共有多少種跳法。  Input: 輸入一個正整數n(n<39)  Output: 輸出青蛙有多少種跳法 這是個斐波那鍥數列,尋找規律即可 num

原创 完全數計算(leetcode)

 完全數(Perfect number),又稱完美數或完備數,是一些特殊的自然數。它所有的真因子(即除了自身以外的約數)的和(即因子函數),恰好等於它本身。 例如:28,它有約數1、2、4、7、14、28,除去它本身28外,

原创 奇偶數(leetcode)

 給定一個長度爲n的數組,請將數組中元素按照奇偶性重新劃分,所有奇數靠左邊,所有偶數靠右邊,然後分別對奇數、偶數部分進行排序 請儘可能實現通過一次遍歷並且原地操作(即不得藉助其他數組)進行奇偶劃分。 Input 輸入有兩行,

原创 求最大連續bit數(leetcode)

 功能: 求一個byte數字對應的二進制數字中1的最大連續數,例如3的二進制爲00000011,最大連續2個1 輸入: 一個byte型的數字 輸出: 無 返回: 對應的二進制數字中1的最大連續數 Input: 3 Outpu

原创 驗證尼科徹斯定理(leetcode)

 驗證尼科徹斯定理,即:任何一個整數m的立方都可以寫成m個連續奇數之和。 例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 輸入: 輸入一個int整數 輸出: 輸出分解後的string

原创 判斷子序列(leetcode)

 給定字符串 s 和 t ,判斷 s 是否爲 t 的子序列。 你可以認爲 s 和 t 中僅包含英文小寫字母。字符串 t 可能會很長(長度 ~= 500,000),而 s 是個短字符串(長度 <=100)。>字符串的一個子序列是原

原创 Python asyncio

  asyncio 正如官方文檔所說, asyncio-Asynchronous I/O, event loop, coroutines and tasks. This module provides infrastructu

原创 Python協程實現生產者和消費者模型

我們知道python最早的協程是基於yield生成器來實現, python3.5之後出現了asyncio和async/await關鍵字,有了更方便的協程方式. yield協程 需要知道我們需要預先激活這個協程, send方法

原创 python實現LRU緩存淘汰

LRU  Least Recent used 最近最少使用算法,主要用於緩存淘汰. 主要目的就是把最近最少使用的數據移除內存,以加載其他數據 原理:  有新數據(意味着數據之前沒有被緩存過)時,加入到列表頭 緩存達到最大容量

原创 單詞的壓縮編碼(leetcode)

給定一個單詞列表,我們將這個列表編碼成一個索引字符串 S 與一個索引列表 A。 例如,如果這個列表是 [“time”, “me”, “bell”],我們就可以將其表示爲 S = “time#bell#” 和 indexes

原创 python求兩數最小公倍數(leetcode)

求最小公倍數  Input: 5 7  輸出: 35  輾轉相除法: 方法1 def common_multiple(x, y): # 獲取最大的數 if x > y: greater = x