LeetCode 410——分割陣列的最大值
1. 題目
2. 解答
此題目為 今日頭條 2018 AI Camp 5 月 26 日線上筆試程式設計題第二道——最小分割分數。
class Solution {
public:
// 若分割陣列的最大值為 value,判斷能否進行劃分
bool cansplit(vector<int>& nums, int value, int m)
{
int len = nums.size();
int i = 0;
int sum = 0;
int split_count = 0; // 分割次數
// 依次往後求和,若和小於等於 value,則繼續加;
// 若和大於 value,則分割次數加 1,從當前位置開始將和清零,重新開始
for (i = 0; i < len; i++)
{
if (sum + nums[i] <= value)
{
sum += nums[i];
}
else
{
split_count++;
sum = nums[i];
}
if (split_count == m) // 分割次數超出 m, 不滿足劃分
{
return false;
}
}
return true;
}
int splitArray(vector<int>& nums, int m) {
int len = nums.size();
int i = 0;
// 分割陣列的最大值介於陣列的最大元素和陣列所有元素的和之間
int max = nums[0];
int sum = 0;
for (i = 0; i < len; i++)
{
if (nums[i] > max)
{
max = nums[i];
}
sum += nums[i];
}
int left = max;
int right = sum;
int mid = 0;
while(left < right)
{
mid = left + (right - left) / 2;
if (cansplit(nums, mid, m)) // 能劃分,繼續找有沒有更小的值
{
right = mid; //不減是因為無法確保減一之後的數是否滿足劃分
}
else // 不能劃分,增大數值繼續尋找
{
left = mid + 1;
}
}
return left;
// 最終 left = right 結束,left 值就是所求
}
};
獲取更多精彩,請關注「seniusen」!
相關文章
- leetcode410分割陣列的最大值(二分+貪心,困難)LeetCode陣列
- 陣列分割陣列
- golang陣列分割Golang陣列
- join 分割陣列陣列
- JavaScript 獲取陣列中最大值JavaScript陣列
- JavaScript 陣列排序 與 求最大值JavaScript陣列排序
- JavaScript陣列中的最大值和最小值JavaScript陣列
- 2439. 最小化陣列中的最大值陣列
- LeetCode刷題—陣列LeetCode陣列
- JavaScript 陣列最大值和最小值JavaScript陣列
- 分割陣列的幾種方法比較陣列
- 力扣-805. 陣列的均值分割力扣陣列
- 『0.6180339887498黃金分割的連環陣列』陣列
- JavaScript split() 分割字串生成陣列JavaScript字串陣列
- Leetcode 陣列中和為給定值的最長子陣列LeetCode陣列
- LeetCode-977.有序陣列的平方LeetCode陣列
- LeetCode 189 旋轉陣列LeetCode陣列
- 修改陣列【並查集維護集合的最大值、連續數字的最大值】陣列並查集
- Leetcode[陣列] 26. 刪除排序陣列中的重複項LeetCode陣列排序
- 【LeetCode-陣列】陣列式整數加法LeetCode陣列
- Numpy陣列的組合與分割詳解陣列
- Golang獲取int陣列裡的最大值和下標Golang陣列
- js獲取數字陣列最大值的幾種方式JS陣列
- LeetCode 關於陣列的相對排序LeetCode陣列排序
- leetcode 349. 兩個陣列的交集LeetCode陣列
- LeetCode-349-兩個陣列的交集LeetCode陣列
- JavaScript獲取陣列最大值和最小值JavaScript陣列
- JavaScript陣列最大值、最小值和平均數JavaScript陣列
- 【LeetCode】189. 旋轉陣列LeetCode陣列
- LeetCode Shuffle an Array(打亂陣列)LeetCode陣列
- 【leetcode】252 會議室(陣列)LeetCode陣列
- leetcode題解(陣列問題)LeetCode陣列
- leetcode 3366. 最小陣列和LeetCode陣列
- Leetcode——349-兩陣列交集LeetCode陣列
- LeetCode-189-旋轉陣列LeetCode陣列
- C語言函式題-查詢陣列每行的最大值C語言函式陣列
- NumPy 分割與搜尋陣列詳解陣列
- 求陣列之和,最小值,最大值,平均值陣列