原创 LeetCode算法問題17 —— Find Largest Value in Each Tree Row

首先看一下問題描述 要求我們找到一個二叉樹每一層的最大值 這個問題用BFS、DFS都可以解決,且不得不遍歷整棵樹。在遍歷過程中,需要時刻記錄當前節點的深度,以便比較同深度下的節點值以獲取每一層的最大值 本題我採用了DFS算法,對於主幹函

原创 LeetCode算法問題12 —— Partition to K Equal Sum Subsets

看一下問題描述 問題要求判斷一個給定的數組能否劃分爲k個代數和相同的子數組。 首先必須獲取給定數組的和 int sum = 0; for(int num:nums) sum += num; 問題就變成了將每個元素劃分到哪

原创 製作多週期CPU(代碼)

MCPU module MCPU( CLK, RST, CurPC, instcode ); input CLK; // 時鐘信號 input RST; // 置零信號 output [31:0] CurPC;

原创 LeetCode算法問題8 —— Remove Nth Node From End of List

看下問題描述 即要求刪除倒數第n個節點。其中給定的n是合法的,因此我們不需要考慮是否會有所給n超出鏈表的問題。 遇到這個問題首先想到的自然是先遍歷鏈表一次確定其長度,然後再來第二遍完成刪除。然而題目要求嘗試一趟完成,這就要求當第一次

原创 LeetCode算法問題18 —— Ones and Zeroes

看一下問題描述 題目給定一個字符串數組,求出由m個0和n個1能夠構成字符串數組中字符串的最大數量 我採用了一種動態規劃的方法解決本題,對於函數 int findMaxForm(vector& strs, int m, int n) 首

原创 LeetCode算法問題15 —— Find Bottom Left Tree Value

先看下問題描述 題目給定一個二叉樹,要求獲取這個數最後一行(最底層)的最左值 其中樹的數據結構有代碼: struct TreeNode { int val; TreeNode *left; TreeN

原创 製作多週期CPU(分析)

上次做完單週期CPU後開始思考多週期的相關設計,最近總算做出來一個馬馬虎虎的。先來說說思路。 要求 原理 1.多週期 多週期CPU指的是將整個CPU的執行過程分成幾個階段,每個階段用一個時鐘週期去完成,然後開始執行下一條指令

原创 LeetCode算法問題14 —— Kth Largest Element in an Array

首先看下問題描述 題目要求給一個無序數組,要求找到第k大的數。 最先想到的辦法自然是通過排序先獲得一個有序數組,再通過提取對應位置獲得結果,例如,可通過庫函數sort來解答問題: int findKthLargest(vecto

原创 LeetCode算法問題5 —— ZigZag Conversion

首先看一下題目 問題描述: 給定一個字符串,及一個整數表示把其分成幾行(Z字長度),然後依次豎着畫Z字。 這個問題其實很好解決,根據題目意思,如果需要n行,建立n個數組指針,然後按規則一個一個賦值,最後老老實實地把字符數組整合成一個字符

原创 LeetCode算法問題16 —— Climbing Stairs

首先看下問題描述 給一個n表示n級臺階,而我們上臺階的方式有一次上1個臺階和一次上2個臺階,需要我們求出到n級臺階一共有多少種方法。 這題自然可以採用遞歸的方式,對於所到達的每級臺階,再次求其到第n級臺階的方法,具體實現類似如下僞代碼

原创 NP-Complete Problem

如題一: Prove that the following problem is NP-complete: given an undirected graph G=(V, E) and an integer k, return a cli

原创 LeetCode算法問題3 —— Median of Two Sorted Arrays

問題描述 問題要求我們找到給定的兩個已排序的數組組合在一起的中位數(median)。 關於時間複雜度爲O(log(m+n))的要求,我還沒達到,但是想到了一個不錯的方法,先記錄下來。 說到中位數的計算,牽扯到這個數列的長度: 爲奇數:

原创 LeetCode算法問題11 —— Maximum Length of Repeated Subarray

先看問題描述 給定兩個整數型數組,要求找出相等的最長子串的長度。特別的,將數組長度限制在了1-1000,且數組元素限制在了0-100 本體採用了動態規劃的算法,從最短相同子串慢慢累積到最長相同子串,每一個更長子串都是基於上一次較短子串

原创 LeetCode算法問題1 —— Add Two Numbers

最近在學校提供網站LeetCode上刷算法題,近段時間會將一些自己覺得有意義,值得效仿的點寫下來,爲自己以後的工作和學習所用。 今天講的是Add Two Numbers 首先看一下問題描述 問題大概意思是這樣的:分別將兩個非負整數的

原创 LeetCode算法問題10 —— Best Time to Buy and Sell Stock with Transaction Fee

問題描述 prices是這個股票每天價錢的數組,而fee,我把它理解爲手續費,即一組買入賣出後要交的費用。 題目要求我們手上只能有1份股權,也就是說如果我們還想買進股票,必須先把原先自己擁有的股票拋售才行。 整個問題的描述就是這樣