原创 位運算優化 乘除,取模,奇偶

&:二進制的與運算符。 |:二進制的或運算符。 ^:二進制的異或運算符。 ~:二進制的取反運算符,所有位都取反。 <<:二進制的按位左移運算符,有符號數左移後符號位不變。 >>:二進制的按位右移運算符,有符號數右移後符號位不變。

原创 Leetcode 416. Partition Equal Subset Sum 回溯法 壓縮的一維動態規劃 位運算

1 回溯法 class Solution { public: bool backtrack(vector<int>& nums, int start, int target) { if (target <=

原创 295. Find Median from Data Stream 用最大堆最小堆找到數據流的中位數

class MedianFinder { priority_queue<long> small, large; public: void addNum(int num) { small.push(

原创 Vim 進階 多文件buffer操作

在當前目錄下 vim *載入多個文件 進入vim後 :ls 可見文件的列表 :ls!可以顯示隱藏的文件或者說buffer 切換文件或者叫buffe :g{行號} 如切換到 clustering.md : b3 或者b clu

原创 C++編譯報錯 non-aggregate cannot be initialized with an initializer list

錯誤信息: non-aggregate type ‘vector’ cannot be initialized with an initializer list 問題出在g++編譯的標準上。Mac的編譯器默認是隻支持C++98

原创 C++報錯error cannot deduce type of initializer list because initializer list was not found include

完整錯誤信息: error: cannot deduce type of initializer list because std::initializer_list was not found; include <initia

原创 論文解讀 Clustering Very Large Multi-dimensional Datasets with MapReduce [KDD 2011]

PPT資源 已製成Latex Beamer版的Slides,下載鏈接 本文總結 本文貢獻 提出 BoW 算法,通過不同的情況下,動態選擇更佳的方法,達到提高效率的目的 通過實驗驗證了算法的有效性和可規模化 基於真實數據

原创 C++ 最大堆最小堆的創建與應用

代碼 #include <iostream> #include <queue> #include <initializer_list> using namespace std; int main(){ //建堆 prio

原创 vim 在指定行的行首,添加行號

原文 想要在每行前面加行號以及’. ',效果如1. https://leetcode.com... https://leetcode.com/problems/peak-index-in-a-mountain-array/ h

原创 Markdown進階語法,添加錨

概念 如果這篇文章特別長,有時寫到某處想要link到文章的另一處,這就用到了錨 用法 要被鏈接到的內容 <span id="name">content</span> [Go Back](#name_back) 其中con

原创 Leetcode 1481. Least Number of Unique Integers after K Removals O(n)解法與易懂的O(nlogn)解法

自己的解法 一個map記錄每個數字的頻率 最小堆保存這些數據,再用k依次去減,看能去掉多少 最終將map的大小減去去掉的數字即可得到答案 時間複雜度O(nlog⁡n)O(n\log n)O(nlogn) class Solut

原创 Leetcode 1382. Balance a Binary Search Tree 看上去難但簡單的medium題

平衡一棵二叉樹,第一反應是上課講過的RR RL LL LR旋轉,代碼實現較難,很厲害的選手也得幾十分鐘寫出 但這裏的情況是,已經給定一棵二叉搜索樹了,故其實已經排好序了,只要把數據再重新插入到一棵平衡二叉樹中即可 所以

原创 Leetcode 1482. Minimum Number of Days to Make m Bouquets 簡單易懂的二分法以及相似題型

思路 典型二分法,左邊界爲0,右邊界不確定,故可直接賦值爲INT_MAX 然後的難點在判斷上,遍歷整個數組時 先看當前是否滿足mid的天數要求,滿足則累加天數 連續天數達到籃子的要求後,籃子數+1,重新累計連續天數 連續天數中

原创 堆的時間複雜度,空間複雜度

時間複雜度 分成初始化堆和取出最大/小元素後修改堆兩個過程看 建堆過程O(n) 取出最大/小元素後修改堆O(nlog⁡n)O(n \log n)O(nlogn) 總的來講,堆的時間複雜度爲O(nlog⁡n)O(n \log

原创 C++ vector 最大值和最大值的位置

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(){ vector<int> a = {