leetcode 699 掉落的方塊

2022-06-09 20:54:08 字數 1542 閱讀 7007

線段樹

zkw線段樹 

初版16ms

namespace

segtree

};node* insert(node* root, int l, int r, int

h)

if(l<=root->l)

else

//更新最大右邊界

root->maxr=max(r,root->maxr);

return

root;

}int query(node* root, int l, int

r)

//減枝

curh = max(curh, query(root->left, l, r));

//這裡以左端為起點,如果新方塊的右端在root->l的左邊說明新方塊就落在左邊就不用查root的右邊了

if(r>root->l)

return

curh;

}}class

solution

return

res;

}};

改成使用引用12ms

namespace

segtree

node(

int l, int r, int h, int maxr,node* left,node*right) : l(l),r(r),h(h),maxr(maxr),left(left),right(right) {}

};node* insert(node& root, int l, int r, int h,node&default_node)

if(l<=root.l)

else

//更新最大右邊界

root.maxr=max(r,root.maxr);

return &root;

}int query(node& root, int l, int

r)

//減枝

curh = max(curh, query(*root.left, l, r));

//這裡以左端為起點,如果新方塊的右端在root.l的左邊說明新方塊就落在左邊就不用查root的右邊了

if(r>root.l)

return

curh;

}}class

solution

segtree::node* default_node=new segtree::node(0, 0, 0, 0

); default_node->left=default_node;

default_node->right=default_node;

//根節點,預設為零

segtree::node* root =default_node;

//目前最高的高度

int maxh = 0

;

for(auto position : positions)

return

res;

}};

Leetcode 699 掉落的方塊 C

在無限長的數軸 即 x 軸 上,我們根據給定的順序放置對應的正方形方塊。第 i 個掉落的方塊 positions i left,side length 是正方形,其中 left 表示該方塊最左邊的點位置 positions i 0 side length 表示該方塊的邊長 positions i 1...

leetcode 840 矩陣中的幻方

3 x 3 的幻方是乙個填充有從 1 到 9 的不同數字的 3 x 3 矩陣,其中每行,每列以及兩條對角線上的各數之和都相等。給定乙個由整數組成的 grid,其中有多少個 3 3 的 幻方 子矩陣?每個子矩陣都是連續的 示例 輸入 4,3,8,4 9,5,1,9 2,7,6,2 輸出 1 解釋 下面...

C 驗證LeetCode包圍區域的DFS方法

在leetcode中的surrounded regions 包圍區域這道題中,我們發現用dfs方法中的最後乙個條件必須是j 1,如下面的紅色字型所示,如果寫成j 0的話無法通過oj,一直百思不得其解其中的原因,直到有告訴我說他驗證了最後乙個大集合在本地機子上可以通過,那麼我也來驗證看看吧。class...