原创 圖的鄰接表實現以及targan算法

/* 點類 */ #ifndef NODE_H__ #define NODE_H__ #include "arc.h" #include <memory> #include <string> struct node { std::st

原创 二叉樹搜索樹轉雙鏈表

/* 1.把二元查找樹轉變成排序的雙向鏈表 題目: 輸入一棵二元查找樹,將該二元查找樹轉換成一個排序的雙向鏈表。 要求不能創建任何新的結點,只調整指針的指向。 10 / \ 6 14 / \ / \ 4 8 12

原创 臺階問題

/** 題目:一個臺階總共有n級,如果一次可以跳1級,也可以跳2級。 求總共有多少總跳法,並分析算法的時間複雜度。 **/ #include <exception> #include <iostream> unsigned long

原创 華爲機試第一題

/* * 選秀節目打分,分爲專家評委和大衆評委,score[] 數組裏面存儲每個評委打的分數 * judge_type[] 裏存儲與 score[] 數組對應的評委類別,judge_type[i] == 1,表示專家評委, * ju

原创 滿足min.push.pop操作時間複雜度爲o(1)的棧

/** 設計一個棧結構,滿足一下條件:min,push,pop操作的時間複雜度爲O(1)。 */ #include <limits> #include <exception> #include <iostream> class stac

原创 上交碩士上機題

/* 1 2 3 4 5 6 7 8 9 0 說某移動電信運營商開發了一個名爲“爭霸”的遊戲,爲鼓勵用戶參與,凡簽約用戶均可獲得前三位爲888的手機號碼,但這樣的話就有10的8次方種可能,現在給出一種限制條件

原创 最大子串和

/** 輸入一個整形數組,數組裏有正數也有負數。 數組中連續的一個或多個整數組成一個子數組,每個子數組都有一個和。 求所有子數組的和的最大值。要求時間複雜度爲O(n)。 例如輸入的數組爲1, -2, 3, 10, -4, 7, 2, -

原创 判斷一個序列是不是另外一個序列的棧的pop序列

/** 題目:輸入兩個整數序列。其中一個序列表示棧的push順序, 判斷另一個序列有沒有可能是對應的pop順序。 爲了簡單起見,我們假設push序列的任意兩個整數都是不相等的。 比如輸入的push序列是1、2、3、4、5,那麼4、

原创 shared_ptr使用,構建list

節點類: /** link list node **/ #ifndef NODE__H__ #define NODE__H__ #include <memory> template<typename T> class node

原创 atoi

/** 題目:輸入一個表示整數的字符串,把該字符串轉換成整數並輸出。 例如輸入字符串"345",則輸出整數345。 **/ #include <iostream> #include <exception> #include <cstri

原创 strcmp和strcpy

char* strcpy(char* dst, char* src, size_t len) { char* d=dst; while((--len)&&(*dst++=*src++)); //方向不可互換 *dst='\0';

原创 求已排序數組中和爲某個數的兩個數

/** 題目:輸入一個已經按升序排序過的數組和一個數字, 在數組中查找兩個數,使得它們的和正好是輸入的那個數字。 要求時間複雜度是O(n)。如果有多對數字的和等於輸入的數字,輸出任意一對即可。 例如輸入數組1、2、4、7、11、15和數字

原创 二叉樹中查找和爲某個數的所有路徑

/* 題目:輸入一個整數和一棵二元樹。 從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。 打印出和與輸入整數相等的所有路徑。 例如 輸入整數22和如下二元樹 10 / \ 5 12 / \

原创 linux權限計算

/* 現在有一數組中存放着 1、2、4、8這四個固定的數字 所有數字不能重複 我想封裝一個函數 輸入一個數字 找出這個數字是由哪幾個數字組成的 比如: 輸入7 找出的數字是1、2、4 輸入15 找出的數字是1、2、4、8 */ #incl

原创 Git 的origin和master分析

原文地址http://lishicongli.blog.163.com/blog/static/1468259020132125247302/點擊打開鏈接 首先要明確一點,對git的操作是圍繞3個大的步驟來展開的(其實幾乎所有的SCM