原创 全排列的四種生成算法

1.字典序法   字典序法中,對於數字1、2、3......n的排列,不同排列的先後關係是從左到右逐個比較對應的數字的先後來決定的。例如對於5個數字的排列 12354和12345,排列12345在前,排列12354在後。按照這樣的

原创 LeetCode--路徑總和III

給定一個二叉樹,它的每個結點都存放着一個整數值。 找出路徑和等於給定數值的路徑總數。 路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的(只能從父節點到子節點)。 二叉樹不超過1000個節點,且節點數值範圍是 [-1

原创 LeetCode-翻轉二叉樹

翻轉一棵二叉樹。 示例: 輸入:      4    /   \   2     7  / \   / \ 1   3 6   9 輸出:      4    /   \   7     2  / \   / \ 9   6 3   1

原创 LeetCode--判斷子序列(簡單)

給定字符串 s 和 t ,判斷 s 是否爲 t 的子序列。 你可以認爲 s 和 t 中僅包含英文小寫字母。字符串 t 可能會很長(長度 ~= 500,000),而 s 是個短字符串(長度 <=100)。 字符串的一個子序列是原始字符串刪除

原创 LeetCode-第一個錯誤版本

你是產品經理,目前正在帶領一個團隊開發新的產品。不幸的是,你的產品的最新版本沒有通過質量檢測。由於每個版本都是基於之前的版本開發的,所以錯誤的版本之後的所有版本都是錯的。 假設你有 n 個版本 [1, 2, ..., n],你想找出導致之

原创 C++11 智能指針概述

0.什麼是智能指針? 智能指針是一種用來管理資源指針的特殊對象,對象中有一個成員變量用來保存動態創建的裸指針,通過重載operator->方法實現類似於裸指針的使用方式。 1.智能指針的作用是什麼? 我們平時使用C++編寫代碼時,動態內存

原创 模擬退火算法介紹-代碼實現

1、爬山算法 爬山算法是一種非常簡單的貪心算法,它總是從當前解的鄰近解中選擇最優解作爲當前解,直到達到局部最優解。爬山算法的算法過程如下圖所示: 假設當前解從C點開始,經過若干次的鄰近最優解搜索,到達了局部最優解A,此時A的鄰近解中沒有

原创 python-麪包店算法實現多線程鎖

#coding: UTF-8 import threading import time import random # 麪包店算法實現線程鎖 # 爭奪的資源 incNum = 0 class BakeryLock: def

原创 LeetCode--分發餅乾

假設你是一位很棒的家長,想要給你的孩子們一些小餅乾。但是,每個孩子最多隻能給一塊餅乾。對每個孩子 i ,都有一個胃口值 gi ,這是能讓孩子們滿足胃口的餅乾的最小尺寸;並且每塊餅乾 j ,都有一個尺寸 sj 。如果 sj >= gi ,我

原创 LeetCode--壓縮字符串

給定一組字符,使用原地算法將其壓縮。 壓縮後的長度必須始終小於或等於原數組長度。 數組的每個元素應該是長度爲1 的字符(不是 int 整數類型)。 在完成原地修改輸入數組後,返回數組的新長度。   進階: 你能否僅使用O(1) 空間解決問

原创 C++ 基於List與Map實現的LRU緩存

常見的緩存淘汰算法有先進先出淘汰算法(FIFO),最近最少使用淘汰算法(LSU),最近最久未使用算法(LRU),MRU(最近最常使用算法)。其中最常用的就是LRU緩存淘汰算法,下面給出代碼實現。 #include "stdafx.h"

原创 LeetCode-左葉子之和

計算給定二叉樹的所有左葉子之和。 示例:     3    / \   9  20     /  \    15   7 在這個二叉樹中,有兩個左葉子,分別是 9 和 15,所以返回 24 來源:力扣(LeetCode) 鏈接:https

原创 大學生創新項目——機房監控系統設計概述

     大三上學期,報名參加了學校的大學生創新項目,選題爲機房監控系統。       目標:        一、硬件採集機房溫度、溼度、GPS、圖像等信息        二、通過網絡傳輸至遠程服務器        三、服務器接收機房信息

原创 LeetCode-迴文鏈表_進階

請判斷一個鏈表是否爲迴文鏈表。 示例 1: 輸入: 1->2 輸出: false 示例 2: 輸入: 1->2->2->1 輸出: true 進階: 你能否用 O(n) 時間複雜度和 O(1) 空間複雜度解決此題? 來源:力扣(LeetC

原创 Kinnect開發——Visual Studio下開發流程

     配置好環境,就可以在Visual Studio下利用C#進行開發了。      1、新建項目,選擇C#中的“windows窗體應用程序”。       2、添加引用:            第一個引用:在.net選項中選擇