LEEDCODE範例
LEEDCODE範例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 ...
HTML Test
HTML TestHTMLQ1. What is the purpose of the <track> tag, and when should it be used?
[ ] The <track> tag is used for specifying subtitles. It is typically applied as a child of the <audio> and <video> tags.
[ ] The <track> tag is used for specifying subtitles. It is typically applied as a child of the <video> tag.
[ ] The <track> tag is used for specifying subtitles, captions, and other types of time-based text. It is typically applied as a child of the ...
182. Duplicate Emails
182. Duplicate EmailsFix Names in a Table
透過leetcode 182Duplicate Emails來練習
使用table
id 是該表的主鍵列。此表的每一行都包含一封電子郵件。電子郵件將不包含大寫字母。
題目說明:編寫 SQL 查詢以報告所有重複的電子郵件。
按任意順序返回結果表。
查詢結果格式如下例所示。
解題:以下為第一個解法
先select count(email) 算出email重複的有幾筆再select一次把沒有重複的去掉( M.rt )
SELECT email FROM ( SELECT email,count(email) as rt FROM Person group by email) Mwhere M.rt > 1
以下為第二個解法
使用 having 將沒有重複的去掉( having count(email) > 1 )having用法
SELECT email FROM Persongroup by emailhaving count(email) > 1
By. @UEW2WaUH ...
線性搜尋(Linear Search or Sequential Search)
線性搜尋(Linear Search or Sequential Search)介紹是一種陣列搜尋的演算法,從頭依序開始查找目標,直到找到目標數
(圖片來自於Data Structure and Algorithms Linear Search)
虛擬碼LINEAR-SEARCH(array, n): for i from 0 to array.length - 1: if (array[i] == n): return i return -1
複雜度時間複雜度最壞(查找位置剛好在最後一項):
$O(n)$
最好(查找位置在第一項):
$O(1)$
平均:
$O(N/2)$
空間複雜度因需要一個計數器和一個遍歷數據結構的指針
$O(1)$
程式碼function linearSearch(arr, n){ for (let i = 0; i < arr.length; i++) { const element = arr[i]; if(element == n){ ...
插入排序(Insertion Sort)
插入排序(Insertion Sort)介紹插入排序是從數列最左邊開始,往右依序排序下去,在過程中,由左至右,先將最左邊的數值設定成已排序,再往右取一個未排序數值,插入已排序中的適當位置,依此類推完成排序。在最糟的情況下,數列從大排到小,每 n 回合就必須進行 n-1 次比較和對調,在第一回合需要一次,第二回合兩次….到第 n 回合發生 n - 1 次,大約等於n^2/2,所以時間複雜度跟氣泡排序還有選擇排序一樣是O(n^2)。
優點:
只需要固定數量的 O(1) 內存空間
在實踐中比大多數其他簡單的二次方算法(如選擇排序或冒泡排序)更有效
(圖片來源)
虛擬碼為甚麼迴圈從 1 開始 ?
因為最左邊的數列一開始會被當作是已排序的
function insertion_sort (array) { for(j from 1 to length-1){ key = array[j] i = j - 1 while i >= 0 and array[i] > key: array[i ...
1729. Find Followers Count
1729. Find Followers CountFix Names in a Table
透過leetcode 1729Find Followers Count來練習
使用table
(user_id, follower_id) 是該表的主鍵。此表包含關注者關注用戶的社交媒體應用程序中的用戶和關注者的 ID。
題目說明:編寫一個 SQL 查詢,該查詢將為每個使用者返回關注者的數量。
返回按 排序的結果表。user_id
查詢結果格式如下例所示。
解題:以下為解法範例
直接 COUNT(DISTINCT follower_id) 算出不重複的follower_id數量然後 GROUP BY USER_ID 再依照USER_ID一樣的合併COUNT(DISTINCT follower_id) 就會算出個別的數量
SELECT USER_ID,COUNT(DISTINCT follower_id) AS followers_countFROM FollowersGROUP BY USER_IDORDER BY USER_ID
By. @UEW2WaUHTqSmPOSfnfXrNw
Git Test
Git TestGitQ1. How can you check your current git version?
[ ] git —v
[x] git —version
[ ] git —option
[ ] git —current
Q2. What command lets you create a connection between a local and remote repository?
[ ] git remote add new
[x] git remote add origin
[ ] git remote new origin
[ ] git remote origin
Reference
Q3. Describe what these Git commands do to the commit history:git reset --hard HEAD~5git merge --squash HEAD@{1}
[ ] They reset the HEAD to the fifth commit in the repo, then ...
何謂演算法
何謂演算法(圖片來自於The Algorithm of an Algorithm)
演算法(Algorithm)是一種按照指定步驟解決問題的方法。它是用來解決一組特定的問題,並且能夠被程式設計師程式化實現。演算法在計算機科學、數學以及其他科學領域都有廣泛的應用。
演算法通常由一系列有順序的指令組成,每一步都是對問題進行分析或操作。演算法必須是清晰明確的,並且可以在有限的時間內達到目的。正確性、可行性和效率是評估演算法的三個主要標準。
正確性指的是演算法必須正確地解決問題,不存在錯誤的情況。可行性指的是演算法必須在可接受的時間內達到目的,並且沒有無限循環的情況。效率指的是演算法所花費的時間和空間是否是可以接受的。
演算法可以通過算法設計方法來改進,以提高效率和正確性。有許多常見的演算法,如排序、搜索、數學運算等。不同的演算法適用於不同的問題,選擇合適的演算法是解決問題的關鍵。
此外,演算法的發展也受到計算能力的提高的影響。隨著計算能力的提高,演算法也可以被用於解決更加複雜的問題。同時,人工智能和機器學習領域的發展也需要更加高效和智能的演算法。
總之,演算法是一個非常重要且不斷演進的領域, ...
選擇排序(Selection Sort)
選擇排序(Selection Sort)介紹選擇排序是反覆進行搜尋數列中最小值並與最左邊的數值對調,選擇排序每次交換一對元素,它們當中至少有一個將被移到其最終位置上,因此對n個元素的表進行排序總共進行至多(n-1)次交換,比較次數第一回合(n-1)次,第二回合(n-2)次….到第n-1回合一次,因此是 (n-1) + (n-1) + ... + 1 ≈ n^2/2,時間複雜度跟泡沫排序一樣是O(n^2)。
(圖片來源)
虛擬碼function selection_sort (array) { for(i from 0 to array.length-2){ var minIndex = i; for(j from i to array.length-1){ if array[j] < array[minIndex]: minIndex = j } swap(array[minIndex], array[i]) } ...
511. Game Play Analysis I
511. Game Play Analysis IGame Play Analysis I
透過leetcode 511Game Play Analysis I來練習
使用table
(player_id, event_date) 是這個表的主鍵。這張表顯示了一些遊戲玩家的活躍度。每一行都是玩家在某天使用某些設備註銷之前登錄並玩了許多遊戲(可能為 0)的記錄。
題目說明:編寫 SQL 查詢以報告每個玩家的首次登錄日期。
按任意順序返回結果表。
查詢結果格式位於以下範例中。
解題:以下為第一個例題 43.44%
select MIN(M.EVENT_DATE) (最小值)
GROUP BY 起來 (依M.PLAYER_ID)
SELECT M.PLAYER_ID,MIN(M.EVENT_DATE) AS FIRST_LOGIN FROM Activity MGROUP BY M.PLAYER_ID
以下為第二個例題 72.11%
select 2次
先將Activity資料表處理 加入id排序(依照M.EVENT_DATE) ROW_NUMBER()ROW_NUMBER() OV ...



