原创 關於堆的操作

/* 堆操作 來源:Data Structures with C++ Using STL */ #include <iostream> #include <vector> #include <stdlib.h> #include <fu

原创 簡化版stack

/* 功能:簡化版stack 說明:參照《Data Structures with C++ Using STL》第二版編寫, 沒有編寫異常處理模塊,利用vector類實現ministack 尾部添加元素push, 刪除元素pop,取棧

原创 二叉樹的所有路徑

/* 問題描述:給一棵二叉樹,找出從根節點到葉子節點的所有路徑。 來源:LintCode 作者:syt日期:2017-11-10 思路:迭代找出葉子

原创 C++容器小結

一、容器種類: 1、順序容器是線性結構,順序容器中每個元素的位置與元素的值無關,只與元素添加到容器的次序有關。順序容器有:array(C++11)、vector、list、deque、forward_list(C++11) 2、關聯容器:

原创 撲克牌順子

題目描述:LL今天心情特別好,因爲他去買了一副撲克牌,發現裏面居然有2個大王,2個小王(一副牌原本是54張^_^)...他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!!“紅心A,黑桃

原创 圓圈中最後剩下的數字

題目描述:0,1,...n-1這n個數字排成一個圓圈,從數字0開始每次從這個圓圈裏刪除第m個數字。求出這個圓圈裏剩下的最後一個數字。解題思路:利用鏈表實現首尾相連的圓圈,逐個從鏈表中刪除結點,直到剩下最後一個結點。struct ListN

原创 按之字形順序打印二叉樹

題目描述請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推思路:利用兩個棧,奇數行存在stack1,偶數行存在stack2,若stack1不爲空,

原创 合併兩個排序鏈表

題目描述輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。非遞歸:/* struct ListNode { int val; struct ListNode *next; ListNode(

原创 數組中的逆序對

題目描述在數組中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P。並將P對1000000007取模的結果輸出。 即輸出P%1000000007解法一:順序掃描整個數組,每

原创 括號匹配

利用堆棧實現括號的匹配/* 問題描述:括號匹配 作者:syt 日期:2018-03-07 */ #include <iostream> #include <stack> #include <string> using namespace

原创 Find Bottom Left Tree Value

Description:Given a binary tree, find the leftmost value in the last row of the tree. Example 1:Input:

原创 逆波蘭表達式

逆波蘭表達式又叫做後綴表達式:如下a+b --> a,b,+a+(b-c) --> a,b,c-,+/* 問題描述:逆波蘭表達式 作者:syt 日期:2018-03-07 */ #include <iostream> #include

原创 重建二叉樹

題目描述輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並

原创 用兩個棧實現隊列

題目描述用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素爲int類型。class Solution { public: void push(int node) { stack1.push(no

原创 旋轉數組中的最小數字

題目描述把一個數組最開始的若干個元素搬到數組的末尾,我們稱之爲數組的旋轉。 輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{3,4,5,1,2}爲{1,2,3,4,5}的一個旋轉,該數組的最小值爲1。 NOTE:給