巴斯卡三角形(Pascal's Triangle)
巴斯卡三角形(Pascal’s Triangle)虛擬碼
解題118. Pascal’s Triangle
題目說明給定一個整數,返回帕斯卡三角形的第一個 numRows。在帕斯卡三角形中,每個數位都是其正上方兩個數位的總和,如下所示:
解法第一種Javascript
除每行最左側與最右側的數字以外,每個數字等於它的左上方與右上方兩個數字之和。
/** * @param {number} numRows * @return {number[][]} */var generate = function(numRows) { if (numRows == 0) return []; let a_num = [[1]]; for (let i = 1 ; i < numRows ; i ++) { let p_num = a_num[i - 1]; let b_num = [1]; //第一位一定為1 for (let j = 1 ; j < i ; j + ...
廣度優先搜尋BFS
廣度優先搜尋BFS介紹節點選項是用 先進先出(FIFO) 方式進行管理,所以可以使用佇列的資料結構
廣度優先搜尋(BFS)是一種圖形搜尋演算法,從圖的起點開始搜尋,先遍歷所有距離起點為1的節點,再遍歷所有距離起點為2的節點,以此類推直到所有可達節點都被遍歷。 BFS適用於需要找到最短路徑或最少步驟的問題,例如迷宮遊戲或圖形路徑問題
虛擬碼以下是使用 JavaScript 撰寫的 BFS 演算法的簡易虛擬碼範本:
// 假設圖形表示為鄰接表 adjacency list 的形式// graph: 圖形,start: 起點,end: 終點function BFS(graph, start, end) { // 用來保存已訪問的節點 const visited = new Set(); // 用來保存尚未探索的節點 const queue = []; // 將起點加入佇列 queue.push(start); // 標記起點已訪問 visited.add(start); while (queue.length > 0) ...
1965. Employees With Missing Information
1965. Employees With Missing Information(資訊來自於leetcode 1965 Employees With Missing Information)
信息缺失的員工
編寫一個 SQL 查詢來報告所有缺少信息的員工的 ID 。如果出現以下情況,則缺少員工信息:
員工姓名缺失,或
員工的工資不見了。返回employee_id 按升序排序的結果表。解題方式:select employee_id from Employees where employee_id not in (select employee_id from Salaries )union all select employee_id from Salaries where employee_id not in (select employee_id from Employees )order by employee_id
解題解析:我們可以用NOT IN的語法來作使用,先找出不在第一個Table裡面的ID,接著找出不再第二個Table裡面的ID,再用UNION把資料合併起來,最後題目 ...
1158. Market Analysis I
1158. Market Analysis IFix Names in a Table
透過leetcode 1158Market Analysis I來練習
使用table
user_id 是該表的主鍵。此表包含在線購物網站的用戶信息,用戶可以在該網站上銷售和購買商品。
order_id 是該表的主鍵。item_id 是 Items 表的外鍵。買家 ID 和賣家 ID 是用戶表的外鍵。
item_id 是該表的主鍵。
題目說明:編寫一個 SQL 查詢,為每個使用者查找加入日期以及他們作為買家所下的訂單數。2019
按任意順序返回結果表。
查詢結果格式如下例所示。
解題:以下為第一個例題
先依題目判斷需要的資料表 只要USERS跟ORDERS資料表
SELECT USER_ID 與 JOIN_DATE
SELECT BUYER_ID, COUNT(ORDER_ID) 再將2019年以外的去掉 分別算出2019年購買次數
將以上JOIN起來再將 NULL的換成0就行了
SELECT U.BUYER_ID, U.JOIN_DATE, ISNULL(O.ORDERS_IN_ ...
堆疊(Stack)
堆疊(Stack)介紹堆疊是資料結構的一種,將數據排成一列,可以把它想像在疊積木,資料不斷往上堆疊,每次取出資料時,只能從最上方的資料開始拿起
後進先出原理,稱為 Last in First out ,簡稱 LIFO
資料無index
只能從最上方加入,並從最上方開始拿取
(圖片取自於Stacks & Queues)
複雜度時間複雜度
Action動作
平均
最壞
訪問(Access)
$O(n)$
$O(n)$
搜尋(Search)
$O(n)$
$O(n)$
插入(Insertion)
$O(1)$
$O(1)$
刪除(Deletion)
$O(1)$
$O(1)$
空間複雜度$O(n)$
空間複雜度隨著 Stack 中元素的數量線性增長
利用 JS 模擬 StackJs Array寫法我們可以利用js array達成stack效果,利用push新增資料在末端,要取出資料使用pop方法即可
let stack = [];stack.push(92); // 新增資料stack.push(46);stack.push(51);stack. ...
1667. Fix Names in a Table
1667. Fix Names in a TableFix Names in a Table
透過leetcode 1667Fix Names in a Table來練習
使用table
user_id 是該表的主鍵。此表包含用戶的ID和名稱。名稱僅由小寫和大寫字符組成。
題目說明:編寫一個 SQL 查詢來修復名稱,以便只有第一個字符是大寫的,其餘的都是小寫的。
返回按 user_id 排序的結果表。
查詢結果格式如下例所示。
解題:以下圖解為第一個例題
select 出user_id與處理轉換大小寫upper:轉大寫lower:轉小寫
select user_id,upper(substring(name,1,1)) + lower(substring(name,2,9999999)) as name from Usersorder by user_id
以下圖解為第二個例題(較正確)
select user_id, concat(upper(left(name,1)), lower(right(name, len(name) -1))) as name f ...
合併排序(Merge Sort)
合併排序(Merge Sort)
此演算法為Divide and Conquer又稱為分而治之的經典範例
如下圖所示,合併排序是將原始數組不斷地二分分割,直到各個子數組都只剩下一個元素,然後再將這些子數組合併在一起排序,最後得到有序的數組。
虛擬碼首先,如果傳入的數組長度小於等於1,則直接返回數組本身。如果不是,則將數組分為左半部分和右半部分,分別遞迴調用mergeSort()函數排序,最後將兩個排序好的數組合併在一起。
function mergeSort(arr): if arr.length <= 1: return arr else: mid = arr.length / 2 left = arr[0...mid] right = arr[mid...end] return merge(mergeSort(left), mergeSort(right))
在merge()函數中,創建一個空的結果數組,然後不斷將左半部分和右半部分的第一個元素進行比較,將較小的元素添加到結果數組中,直到左半 ...
1873. Calculate Special Bonus
1873. Calculate Special Bonus本題主要考驗 case when 用法
Calculate Special Bonus
透過leetcode 1873Calculate Special Bonus來練習
使用table
employee_id 是該表的主鍵。該表的每一行表示員工 ID、員工姓名和薪水。
題目說明:編寫 SQL 查詢來計算每個員工的獎金。如果員工的ID是奇數,並且員工姓名不以’M’字元開頭,則員工的獎金是他們的工資。其餘為0。
返回按 排序的結果表。employee_id
查詢結果格式如以下範例所示。
解題:以下為第一個例題
先以 case when ( employee_id % 2 ) = 0 判斷資料是否為奇數
在抓出 substring(name,1,1) = 'M' 字首為 ‘M’ 的員工
select employee_id employee_id, case when ( employee_id % 2 ) = 0 then 0 when substring(name,1,1) = 'M ...
JavaScript Test
JavaScript TestJavaScriptQ1. Which operator returns true if the two compared values are not equal?
[ ] <>
[ ] ~
[ ] ==!
[x] !==
Reference Javascript Comparison Operators
Q2. How is a forEach statement different from a for statement?
[ ] Only a for statement uses a callback function.
[x] A for statement is generic, but a forEach statement can be used only with an array.
[ ] Only a forEach statement lets you specify your own iterator.
[ ] A forEach statement is generic, but a for statement ...
C# Test
C# TestCQ1. In which of these situations are interfaces better than abstract classes?
[ ] When you need to define an object type’s characteristics, use an interface. When you need to define an object type’s capabilities, use an abstract class.
[ ] Interfaces are a legacy of older versions of C#, and are interchangeable with the newer abstract class feature.
[x] When you need a list of capabilities and data that are classes-agnostic, use an interface. When you need a certain object type to share ...



