原创 LeetCode. 最大子序和 (動態規劃)

給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。 示例: 輸入: [-2,1,-3,4,-1,2,1,-5,4], 輸出: 6 解釋: 連續子數組 [4,-1,2,1]

原创 LeetCode 迴文鏈表(遍歷過程中逆置一半的鏈表)

struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; class Solution {

原创 LeetCode 128.最長連續序列(Longest Consecutive Sequence)【並查集】【HashMap技巧】

給定一個未排序的整數數組,找出最長連續序列的長度。 要求算法的時間複雜度爲 O(n)。 示例: 輸入: [100, 4, 200, 1, 3, 2] 輸出: 4 解釋: 最長連續序列是 [1, 2, 3, 4]。它的長度爲

原创 LeetCode. 矩陣置零(巧用數組首行首列存取信息,空間複雜度O(1))

#include <vector> using namespace std; class Solution { public: void setZeroes(vector<vector<int>>& matrix) { bo

原创 LeetCode. 673. 最長遞增子序列的個數(動態規劃 + 狀態累計)

#include <vector> #include <iostream> using namespace std; class Solution { public: int findNumberOfLIS(vector<int>&

原创 LeetCode. 二叉樹中的最大路徑和(遞歸,分左右子樹進行判斷)

給定一個非空二叉樹,返回其最大路徑和。 本題中,路徑被定義爲一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含一個節點,且不一定經過根節點。 示例 1: 輸入: [1,2,3] 1 / 2 3 輸出: 6 struc

原创 LeetCode. 被圍繞的區域(深搜 / 廣搜 / 並查集)

給定一個二維的矩陣,包含 ‘X’ 和 ‘O’(字母 O)。 找到所有被 ‘X’ 圍繞的區域,並將這些區域裏所有的 ‘O’ 用 ‘X’ 填充。 示例: X X X X X O O X X X O X X O X X 運行你的函數後,矩

原创 LeetCode. 二叉樹的最近公共祖先(樹遍歷+用棧存兩條路徑+尋找路徑中的節點)

給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。 struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x)

原创 LeetCode.直線上最多的點數 (最大公約數對分數進行約分,自建string作分數)

給定一個二維平面,平面上有 n 個點,求最多有多少個點在同一條直線上。 輸入: [ [ 1 , 1 ], [ 2 , 2 ], [ 3 , 3 ] ] 輸出: 3 class Solution { private: //獲取斜率

原创 LeetCode. 分割回文串(Permutations)【傳統常規遞歸回溯,類似DFS】

#include <string> #include <vector> using namespace std; class Solution { private: //簡單判斷迴文 bool isPalindromeString

原创 LeetCode. 尋找兩個有序數組的中位數(二分技巧 + 邊界處理問題)

核心講解可參考:https://blog.csdn.net/hit1110310422/article/details/80865539 i 值用於切割nums1,j 用於切割num2 對 nums1數組 進行二分查找,搜尋到恰好符

原创 LeetCode. Task Scheduler(CPU任務調度安排算法,減少待機時間【貪心】)

class Solution { public: int leastInterval(vector<char>& tasks, int n) { vector<int> task_vec(26, 0); for (int t

原创 LeetCode. 遞增的三元子序列(時間O(n)空間O(1))

class Solution { public: bool increasingTriplet(vector<int>& nums) { int m1 = INT_MAX, m2 = INT_MAX;

原创 LeetCode382. 鏈表隨機節點————蓄水池抽樣算法

//蓄水池抽樣 class Solution { private: ListNode * HEAD; public: //初始化 Solution(ListNode* head) { srand((unsigne

原创 LeetCode142. Linked List Cycle||(環形鏈表)——— 判斷鏈表是否有環以及求其入環節點

struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(nullptr) {} }; //判斷鏈表是否有環 //方法: //1、空間複雜度