線段樹
zkw線段樹
初版16ms
namespacesegtree
};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
namespacesegtree
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...