原创 leetcode208. 實現 Trie (前綴樹)

實現一個 Trie (前綴樹),包含 insert, search, 和 startsWith 這三個操作。 示例: Trie trie = new Trie(); trie.insert(“apple”); trie.search(

原创 編程題:最長公共子序列

也就是LCS問題,常規的動態規劃題目,狀態轉移矩陣見下圖: 代碼呼之欲出: class Solution: def lsc(self, a, b): len_a, len_b = len(a), len(b)

原创 Python實現六大常見的排序算法

首先建立一個新文件random_list.py用來隨機生成整數列表,代碼如下: # -*- coding:utf-8 -*- __author__ = 'ShawDa' import random def random_int_

原创 leetcode152. 乘積最大子序列

給定一個整數數組 nums ,找出一個序列中乘積最大的連續子序列(該序列至少包含一個數)。 示例 1: 輸入: [2,3,-2,4] 輸出: 6 解釋: 子數組 [2,3] 有最大乘積 6。 示例 2: 輸入: [-2,0,-1] 輸

原创 編程題:過河問題

參考這個動態規劃-小朋友過橋問題。 最少兩個人,最多三個人,所以有以下兩種策略: 1.每次都用前兩個人送一個人過去,假設先送最後一個,前兩個送它過去再回來需要data[1]和data[i-1]的時間,依次類推把剩下所有的都送過去;

原创 編程題:畢業旅行問題

也就是旅行商(TSP)問題,有很多解決方法,這裏就介紹一種:動態規劃,參考乾貨|十分鐘教你用動態規劃算法解Travelling Salesman Problem(TSP)問題,附代碼……。 最重要的是找到狀態轉移方程,是這個: 從

原创 leetcode151. 翻轉字符串裏的單詞

給定一個字符串,逐個翻轉字符串中的每個單詞。 示例 1: 輸入: “the sky is blue” 輸出: “blue is sky the” 示例 2: 輸入: " hello world! " 輸出: “world! hel

原创 leetcode150. 逆波蘭表達式求值

根據逆波蘭表示法,求表達式的值。 有效的運算符包括 +, -, , / 。每個運算對象可以是整數,也可以是另一個逆波蘭表達式。 說明: 整數除法只保留整數部分。 給定逆波蘭表達式總是有效的。換句話說,表達式總會得出有效數值且不存在除數

原创 leetcode149. 直線上最多的點數

給定一個二維平面,平面上有 n 個點,求最多有多少個點在同一條直線上。 示例 1: 輸入: [[1,1],[2,2],[3,3]] 輸出: 3 示例 2: 輸入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4

原创 Google面試題:人和自行車匹配

題目參考這裏,也是leetcode-cn舉辦的編程大賽的一道題,只想到了暴力法解決,超時了: # -*- coding:utf-8 -*- __author__ = 'ShawDa' class Solution: def

原创 字節跳動0414筆試編程題

第一題 和leetcode994. 腐爛的橘子一樣的,AC解答: # -*- coding:utf-8 -*- __author__ = 'ShawDa' def get_ret(res): x, y, ret = len

原创 leetcode148. 排序鏈表

在 O(n log n) 時間複雜度和常數級空間複雜度下,對鏈表進行排序。 示例 1: 輸入: 4->2->1->3 輸出: 1->2->3->4 示例 2: 輸入: -1->5->3->4->0 輸出: -1->0->3->4->5

原创 leetcode147. 對鏈表進行插入排序

對鏈表進行插入排序。 從第一個元素開始,該鏈表可以被認爲已經部分排序(用黑色表示)。 每次迭代時,從輸入數據中移除一個元素(用紅色表示),並原地將其插入到已排好序的鏈表中。 插入排序算法: 插入排序是迭代的,每次只移動一個元素,直到所

原创 編程題:區間中的最小數 * 區間所有數的和最大

給定一個數組序列, 需要求選出一個區間, 使得該區間是所有區間中經過如下計算的值最大的一個: 區間中的最小數 * 區間所有數的和最後程序輸出經過計算後的最大值即可,不需要輸出具體的區間。 如給定序列 [6 2 1]則根據上述公式,

原创 leetcode146. LRU緩存機制

運用你所掌握的數據結構,設計和實現一個 LRU (最近最少使用) 緩存機制。它應該支持以下操作: 獲取數據 get 和 寫入數據 put 。 獲取數據 get(key) - 如果密鑰 (key) 存在於緩存中,則獲取密鑰的值(總是正