佇列(Queue)
佇列(Queue)介紹佇列式資料結構的一種,類似堆疊,但佇列是在頭尾兩端最新增和刪除,數據就像在排隊,在隊伍中最晚到的人排在最後面,先到的人則優先處理(如下圖所示)。
佇列的幾個重點:
先進先出的原理,稱為 First In First Out 縮寫為 FIFO
元素沒有index
從後面加入,從前面移除
Enqueue指的是新增東西至queue,Dequeue指的是從queue移除東西
(圖片來自於Queues)
實作QueueJS Array實作我們可以利用Array的方法模擬Queue,利用push模擬新客人來排隊,利用shift模擬最前面的客人已處理完成離開了。
let queue = [];queue.push(68);queue.push(50);queue.push(92);queue.push(29);queue.push(57);queue.push(88);queue.shift();
物件導向實作初始化節點以及queueNode節點有值以及可以知道他的下一個節點是誰
Queue 我們能知道他頭尾的節點以及長度為何
class Node { cons ...
509. Fibonacci Number
509. Fibonacci Number本題主要考驗將資料 費波那契數 用法
Rearrange Products Table
透過leetcode 509Fibonacci Number來練習
題目說明:斐波那契數列通常表示F(n)為一個數列,稱為斐波那契數列,其中每個數都是前兩個數的和,從0和開始1。題目:
解題:var fib = function(n) { if(n === 0) return 0 if(n === 1) return 1 return fib(n-1)+fib(n-2); };
1084. Sales Analysis III
1084. Sales Analysis III(資訊來自於leetcode 1084 Sales Analysis III)
銷售分析三使用tableproduct_id 是這個表的主鍵。該表的每一行表示每個產品的名稱和價格。這個表沒有主鍵,可以有重複的行。product_id 是 Product 表的外鍵。此表的每一行都包含有關一次銷售的一些信息。
題目說明:編寫一個 SQL 查詢,報告僅在第一季度售出的產品。包含2019即介於2019-01-01到2019-03-31之間。
以任意順序返回結果表。
查詢結果格式如下例所示。
解題方式(MS SQL SERVER):select DISTINCT M.product_id ,M.product_name from Product Mleft outer join Sales A on A.product_id = M.product_idwhere A.sale_date >= '2019-01-01' AND A.sale_date<= '2019-03-31' and A ...
鏈結串列(Linked list)
鏈結串列(Linked list)介紹鏈結串列是線性的數據結構(linear collection),與陣列不同,鏈結的元素不存儲在連續位置,元素使用指針鏈接。它們包括一系列連接的節點。每個節點存儲數據和下一個節點的位置(如下圖所示),便於追加或刪除,但儲存數據很費時。
優缺點優點
新增以及刪除資料比陣列來的更快
動態陣列,不會有陣列重新定義大小問題
缺點
數據儲存不連續記憶體位置
訪問指定位置必須從頭開始查找
需而外記憶體空間儲存儲存指標
複雜度(圖片取自於bigocheatsheet)
時間複雜度
動作
時間複雜度
插入
$O(N)$ \/ $O(1)$ 插入頭節點
刪除
$O(N)$ \/ $O(1)$ 刪除頭節點
搜尋
$O(N)$
訪問index
$O(N)$
空間複雜度 $O(n)$
其中 n 是列表中元素的數量,因為列表中的每個節點都需要內存來存儲其數據和指向下一個節點的指針。
常見種類
單向鏈結串列(Singly Linked List)
雙向鏈結串列(Doubly Linked List)
迴圈鏈結串列(Circularly ...
1327. List the Products Ordered in a Period
1327. List the Products Ordered in a PeriodRearrange Products Table
透過leetcode 1327List the Products Ordered in a Period來練習
題目說明:撰寫一個 SQL 查詢,以獲取在 2020 年 2 月至少訂購了一定數量100的產品名稱和其金額。返回的結果表可以按任意順序排列。其中,product_name 是產品名稱,total_amount 是在 2020 年 2 月至少訂購了一定數量的該產品的總金額。
解題:第一種
select a.* from ( select m.product_name,sum(m.unit) as unit from ( select p.product_id,p.product_name,substring(CAST(o.order_date AS varchar(10)),6,2) as o_date,o.unit from Products p left outer join Orders o on o.produ ...
PHP问题与简答
PHP问题与简答PHP 篇echo、print、print_r、var_dump 区别
echo和print是语言结构、print_r和var_dump是普通函数
echo:输出一个或多个字符串
print:输出字符串
print_r:打印关于变量的易于理解的信息
var_dump:打印关于变量的易于理解的信息(带类型)
拓展阅读 《echo、print、print_r、var_dump区别》
单引号和双引号的区别双引号可以被分析器解析,单引号则不行
详细
单引号不能解析变量
单引号不能解析转义字符,只能解析单引号和反斜线本身
变量和变量,变量和字符串,字符串和字符串之间可以用.连接
双引号可以解析变量,变量可以使用特殊字符和{}包含
双引号可以解析所有转义字符
也可以使用.来连接最重要的是单引号比双引号效率高
isset 和 empty 的区别isset:检测变量是否已设置并且非 NULL
empty:判断变量是否为空,变量为 0/false 也会被认为是空;变量不存在,不会产生警告
static、self、$this 的区别static:static 可以用于静 ...
1148. Article Views I
1148. Article Views IArticle Views I
透過leetcode 1148Article Views I來練習
使用table
此表沒有主鍵,它可能有重複的行。該表的每一行表示某個查看者在某個日期查看了一篇文章(由某個作者撰寫)。請注意,author_id 和 viewer_id 相等的話表示為同一個人。
題目說明:編寫 SQL 查詢以查找至少查看過自己一篇文章的所有作者。
返回按id升序排序的結果表。
查詢結果格式位於以下範例中。
解題:以下為第一個解法
WHERE author_id = viewer_id 先判斷查看過自己一篇文章的所有作者
DISTINCT author_id AS id 再去掉重複的資料,並SELECT出來
SELECT DISTINCT author_id AS id FROM VIEWSWHERE author_id = viewer_id
By. @UEW2WaUHTqSmPOSfnfXrNw
有效字謎(Valid Anagram)
有效字謎(Valid Anagram)虛擬碼
解題242. Valid Anagram
題目說明給定兩個字串和 ,返回 if 是 的字謎,否則。sttruetsfalse字謎是通過重新排列不同單詞或短語的字母而形成的單詞或短語,通常只使用一次所有原始字母。
解法
首先判斷兩字串長度是否相同 如果不同回傳false
迴圈判斷2字串是否有不同 (使用indexOf)
回傳 -1 代表找不到相同的 回傳false
回傳不是 -1 的就將同位置字元刪除 再跑一圈
第一種Javascript
/** * @param {string} s * @param {string} t * @return {boolean} */var isAnagram = function(s, t) { let s_len = 0; let t_len = 0; s_len = s.length; //s字串長度 t_len = t.length; //t字串長度 //首先判斷兩字串長度是否相同 if (s_l ...
PHP 反射详解
PHP 反射详解面向对象编程中对象被赋予了自省的能力,而这个自省的过程就是反射。反射,直观理解就是根据到达地找到出发地和来源。比如,一个光秃秃的对象,我们可以仅仅通过这个对象就能知道它所属的类、拥有哪些方法。反射是指在PHP运行状态中,扩展分析PHP程序,导出或提出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取信息以及动态调用对象方法的功能称为反射API。如何使用反射API
如何使用反射 APIclass person{ public $name; public $gender; public function say(){ echo $this->name," \tis ",$this->gender,"\r\n"; } public function set($name, $value) { echo "Setting $name to $value \r\n"; $this->$name= $value; } public funct ...
1393. Capital Gain/Loss
1393. Capital Gain/LossFix Names in a Table
透過leetcode 1393Capital Gain/Loss來練習
使用table
(stock_name, operation_day) 是該表的主鍵。操作列是一個 ENUM 類型 (‘Sell’, ‘Buy’)該表的每一行表示具有 stock_name 的股票在當天 operation_day 以價格進行了操作。保證股票的每個“賣出”操作在前一天都有相應的“買入”操作。還保證股票的每個“買入”操作在接下來的一天都有相應的“賣出”操作。
題目說明:編寫 SQL 查詢以報告每隻股票的資本損益。
股票的資本收益/損失是買賣股票一次或多次后的總收益或損失。
按任意順序返回結果表。
查詢結果格式位於以下範例中。
解題:以下為第一個例題
先判斷OPERATION = 'BUY' 即為 支出所以加上 - 號
再用一個 select 把全部PRICE sum起來
SELECT A.STOCK_NAME,SUM(A.C1) AS CAPITAL_GAIN_LOSS FROM ( SELE ...


