原创 LeetCode和爲k的子數組&兩數之和(哈希表的用法)

題目說明 點此在線提交 方法一:暴力法 int subarraySum(vector<int>& nums, int k) { int count = 0; for(int start = 0; start <

原创 LeetCode求二叉樹直徑

題目描述 題目分析 所謂求直徑,就是求左右子樹深度之和,而這個題又不能僅僅是考慮左右子樹的而深度之和,因爲求直徑的時候可以不經過根結點。也就意味着如果root結點的右子樹只有一層,而左子樹卻長滿了結點,直接求root結點兩子樹的

原创 socket編程常用函數筆記

一、什麼是Socket Socket可以看成是用戶進程與內核網絡協議棧的編程接口 Socket不僅可以用於本機的進程通信,還可以用於網絡上不同主機的進程間通信 二、套接字地址結構 IPv4地址結構,以 “sockaddr_i

原创 LeetCode動態規劃專題

一、買賣股票的最佳時機 雖然這題標記的是簡單,個人感覺還是挺難的。。。也許是我太菜了吧,找了題解纔會做,看了大佬的題解後,發現這是一種題型,真是醍醐灌頂。覺得應該總結一下,作爲自己的刷題筆記。下面進入正文。 老司機一眼可以看出,

原创 LeetCode廣搜深搜專題

一、島嶼最大的面積(dfs) 這題是可以被一步捕獲的棋子數的升級版,“可以被一步捕獲的棋子數”只是從一個點開始遍歷,而本題把所有的點都作爲起始點遍歷 深度優先遍歷,選定一個點後不斷地從上下左右四個方向遍歷,直到某個方向碰到0

原创 從Python角度理解多線程和多進程

一、線程 什麼是線程? CPU 調度和分派的基本單位,當前線程 CPU 時間片用完後,會讓出 CPU 等下次操作系統調度,輪到自己執行的時候再執行。操作系統不會爲線程分配內存,但是線程組之間可以共享所屬進程的資源,比如文件,數據庫

原创 pandas實戰(PM2.5)

實戰內容:利用pandas以及數據可視化對比中美統計的PM2.5數據 數據來源:PM2.5數據 首先打印一下數據信息,查看數據結構 file_path = "./BeijingPM20100101_20151231.csv"

原创 爬取豆瓣網電視劇數據(共1500條)

我們現在爬取電視劇中的美劇、國產劇、港劇三個分類的所有數據,共1500條 1、打開開發者工具,找到第一頁對應的json數據。(尋找時忽略所有的js,css,ico文件) 2、在第一頁的包含電視劇數據的包中找到請求的url 3

原创 LeetCode將數組分成和相等的三個部分

題目描述 方法一:直接遍歷 從前往後遍歷,記錄下和爲sum/3的序列數量,找到3個就返回true 遍歷完了,依然沒有找到3個和爲sum/3的序列,返回false bool canThreePartsEqualSum(vec

原创 從操作系統角度理解進程與線程

正在學習操作系統,記一些筆記 一、進程的定義 進程實體組成:程序段、數據段、PCB PCB是進程存在的唯一標誌 進程經典定義: 進程是程序的一次執行過程 進程是具有獨立功能的程序在數據集合上運行的過程,它是系統進行資源分配和調度

原创 C++中的數組初始化問題

動態數組初始化 使用new創建數組的時候,返回的是指向0號元素的指針 int* nums1 = new int[10]{0,1}; //前兩個元素用給的值,其他的元素用int類型默認值 int* nums2 = new int

原创 LeetCode反轉二叉樹

題目描述 方法一:中序遍歷 TreeNode* invertTree(TreeNode* root) { if(root == nullptr) return nullptr; //找到左結點

原创 LeetCode零錢兌換(dp)

題目描述 用coins = [1, 2, 5], amount = 11舉例 組成11的硬幣數,考慮最後一枚硬幣是1、2、5,可以分3種情況: 最後一枚硬幣是1元:num1 = 【組成10的最小硬幣數】+ 1(1枚1元硬幣)

原创 LeetCode迴文鏈表

題目描述 不寫博客怕把刷過的題給忘了,寫一篇博客當作自己的刷題筆記 分析 題目要求用O(n)的時間複雜度和O(1)的空間複雜度,顯然不能用數組將鏈表的值記錄下來再判斷了 先用快慢指針(快2慢1)找到鏈表的中間位置,然後把前半部

原创 LeetCode字符串壓縮

題目描述 遍歷法 在C++中 s += s1 等價於s.append(s1),不產生新的對象。不利用額外空間 s = s + s1 是先創建一個string對象,再把s1的內容賦值給s(s的地址不變),利用額外空間 stri