leetcode:1326. 灌溉花園的最少水龍頭數目(dp,困難)
題目:
分析:直接把水龍頭轉化為區間,那麼就是一道簡答的區間問題。
要全部覆蓋,那麼顯然要選擇某一位置開頭(或包含某一位置),然後可以向右達到的最大長度。
也就是一道穿著華麗外表的基礎題。
程式碼:
class Solution {
public:
struct node{
int x;
int y;
} nn[10005];
int n2=0;
static bool cmp(struct node &n1,struct node &n2)
{
if(n1.x==n2.x) return n1.y<n2.y;
return n1.x<n2.x;
}
int minTaps(int n, vector<int>& r) {
//int n;
//vector<int> r;
for(int i=0;i<r.size();i++)
{
if(r[i]==0) continue;
nn[n2].x=max(0,i-r[i]);
nn[n2].y=min(n,i+r[i]);
n2++;
}
sort(nn,nn+n2,cmp);
int l=0;
int ans=0;
int n3=0;
while(1)
{
if(l>=n) return ans;
if(n2==n3) return -1;
if(nn[n3].x>l) return -1;
int maxx=nn[n3].y;
n3++;
while(n3<n2)
{//找包含l且最大的。
if(nn[n3].x>l) break;
maxx=max(nn[n3].y,maxx);
n3++;
}
l=maxx;
ans++;
}
}
};
相關文章
- leetcode:1000. 合併石頭的最低成本(區間dp,困難)LeetCode
- 2617. 網格圖中最少訪問的格子數(困難)
- 【js】Leetcode每日一題-製作m束花所需的最少天數JSLeetCode每日一題
- 智慧園林:智慧節水灌溉監控系統解決方
- Some 困難的數論
- leetcode:41. 缺失的第一個正數(困難,陣列)LeetCode陣列
- 網際網路巨頭灌溉,虛擬偶像市場開花
- MYSQL練習題:給定數字的頻率查詢中位數(Leetcode困難)MySqlLeetCode
- 3111. 覆蓋所有點的最少矩形數目
- LeetCode C++ 968. Binary Tree Cameras【Tree/DFS】困難LeetCodeC++
- Leetcode171-190刷題筆記(非困難題)LeetCode筆記
- 園子開店記-起名:萬事開頭難,起名難上難
- 強爸帶娃記之幼兒園選擇困難症
- Leetcode 通過率最高的困難題 N皇后 II 【回溯解法-剪枝】LeetCode
- 力扣刷題——3096.得到更多分數的最少關卡數目力扣
- 【LeetCode刷題(困難程度)】132. 分割回文串 IILeetCode
- LeetCode 3014[輸入單詞需要的最少按鍵次數I]LeetCode
- leetcode 4. Median of Two Sorted Arrays 尋找兩個正序陣列的中位數(困難)LeetCode陣列
- 出門困難
- 園子的融資計劃:最困難的時候偶遇最對的合夥人
- 【leetcode】45. Jump Game II 非負陣列的最少跳躍步數LeetCodeGAM陣列
- LeetCode 不只是題解(10.正規表示式匹配[困難])LeetCode
- LeetCode題解(1512):好數對的數目(Python)LeetCodePython
- P1077 擺花【DP】
- 最少操作次數
- 機器學習最困難的部分:超引數除錯機器學習除錯
- leetcode:462. 最少移動次數使陣列元素相等 II(數學,中等)LeetCode陣列
- 選擇困難的三點思考
- 3229. 使陣列等於目標陣列所需的最少操作次數陣列
- P1357 花園
- 起床困難綜合症
- 一些困難題
- 插頭dp初探
- leetcode410分割陣列的最大值(二分+貪心,困難)LeetCode陣列
- 史上最全,細數 AIGC 在測試領域落地的困難點AIGC
- [DP] 數位DP
- 3296. 移山所需的最少秒數
- JS祕密花園摘要JS