LeetCode 01 貪心演算法

2022-07-16 02:36:12 字數 1889 閱讀 6141

455. 分發餅乾(easy)

**

public int findcontentchildren(int g, int s) 

}int res = array[ratings.length-1];

for (int i = ratings.length-2; i >= 0; i--)

res += array[i];

}return res;

}

先將區間們按照結尾從小到大進行排序,然後依次比較是否相交。不相交則不用刪除,相交則刪除

**

public static int eraseoverlapintervals(int intervals) 

});for (int interval : intervals)

int res = 0;

int prev = intervals[0];

// 如果當前區間和prev區間相交,那麼則刪除。

for (int i = 1; i < intervals.length; i++) else

}return res;

}

注意605. 種花問題(easy)

452. 用最少數量的箭引爆氣球(medium)

**

public static int findminarrowshots(int points) 

arrays.sort(points, new comparator()

}});

int temp = points[0];

int res = 1;

for (int i = 1; i < points.length; i++) else

}return res;

}

注意406. 根據身高重建佇列(medium)

**

public static int reconstructqueue(int people) 

});int maxheight = 0;

for (int person : people)

listqueue = new linkedlist<>();

for (int i = 0; i < people.length; i++)

int heigher = 0;

int index = 0;

// 找到高於當前元素的前k個

while (heigher < people[i][1])

}// 找到第k+1個,找不到就加在

while (index < queue.size()) else

}queue.add(index, people[i]);

}return queue.toarray(people);

}

問題:耗時太長了,不夠簡練,時間複雜度為o(n^3)

優化改進(來自leetcode官方題解)

簡直太強了好嗎

新**

public int reconstructqueue(int people) 

});listres = new linkedlist<>();

for (int person : people)

return res.toarray(people);

}

665. 非遞減數列(easy)

採用拉高的情況:nums[i]

**

public boolean checkpossibility(int nums)  else }}

return times <= 1;

}

貪心演算法(leetcode)

1 分糖果 455 用最小的糖果大小滿足需求最小的孩子 class solution else return count 2 搖擺序列 376 遍歷一次,儲存乙個狀態,如果狀態為上公升,變為下降,則長度 1,下降變上公升 1 class solution def wigglemaxlength se...

LeetCode 貪心演算法

12.15 135.12.21 435.假設你是一位很棒的家長,想要給你的孩子們一些小餅乾。但是,每個孩子最多只能給一塊餅乾。對每個孩子 i,都有乙個胃口值 g i 這是能讓孩子們滿足胃口的餅乾的最小尺寸 並且每塊餅乾 j,都有乙個尺寸 s j 如果 s j g i 我們可以將這個餅乾 j 分配給孩...

leetcode 貪心演算法

貪心演算法中,是以自頂向下的方式使用最優子結構,貪心演算法會先做選擇,在當時看起來是最優的選擇,然後再求解乙個結果的子問題。貪心演算法是使所做的選擇看起來都是當前最佳的,期望通過所做的區域性最優選擇來產生乙個全域性最優解 如最小生成樹 dijkstra單源最短路徑 貪心選擇性質 所謂貪心選擇性質是指...