手擼早餐組合問題解法

2021-10-24 16:15:40 字數 1098 閱讀 3524

小釦在秋日市集選擇了一家早餐攤位,一維整型陣列 staple 中記錄了每種主食的**,一維整型陣列 drinks 中記錄了每種飲料的**。小釦的計畫選擇乙份主食和一款飲料,且花費不超過 x 元。請返回小釦共有多少種購買方案。

注意:答案需要以1e9 + 7 (1000000007)為底取模,如:計算初始結果為:1000000008,請返回1

示例:輸入:staple = [10,20,5], drinks = [5,5,2], x = 15輸出:6

解釋:小釦有 6 種購買方案,所選主食與所選飲料在陣列中對應的下標分別是:

第 1 種方案:staple[0] + drinks[0] = 10 + 5 = 15;

第 2 種方案:staple[0] + drinks[1] = 10 + 5 = 15;

第 3 種方案:staple[0] + drinks[2] = 10 + 2 = 12;

第 4 種方案:staple[2] + drinks[0] = 5 + 5 = 10;

第 5 種方案:staple[2] + drinks[1] = 5 + 5 = 10;

第 6 種方案:staple[2] + drinks[2] = 5 + 2 = 7。

排序加雙指標解法

class solution else

}return count;}}

1.將staple,drinks從小到大排序

2.設定變數i(i從0到staple.length-1),j(j從drinks.length-1到0)

讓staple[i]+drinks[j]與x比較

一開始staple[0]+drinks[drinks.length-1] > x,說明花費已經超過x了,需要減少飲料的**,故j--

一開始staple[0]+drinks[drinks.length-1] <= x,說明花費符合要求,由於變數j是從大到小的,則說明前面的drinks前面的元素也必然符合要求,沒必要再去多此一舉判斷一遍,

直接讓計數累加上j+1(j+1表示符合要求的飲料**有幾個)就完事了

top K 問題解法

問題描述 從arr 1,n 這n個數中,找出最大的k個數,這就是經典的topk問題。栗子 從arr 1,12 這n 12個數中,找出最大的k 5個。一 排序 排序是最容易想到的方法,將n個數排序之後,取出最大的k個,即為所得。偽 sort arr,1,n return arr 1,k 時間複雜度 o...

螺旋佇列問題解法

看到這個怪圖了嗎?對,就是螺旋佇列!看清以上數字排列的規律,設 1 點的座標是 0,0 x 方向向右為正,y 方向向下為正。例如,7 的座標為 1,1 2 的座標為 1,0 3 的座標為 1,1 程式設計實現輸入任意一點座標 x,y 輸出所對應的數字。finland 某著名通訊裝置公司 2005 年...

錯排問題解法

背景 同室四人各寫一張賀卡,先集中起來,然後每人從中拿一張別人送出的賀卡,四張賀卡的不同分配方式有多少種?問題 錯排問題 有n個正整數1,2,3,n,將這n個正整數重新排列,使其中的每乙個數都不在原來的位置上,這種排列稱為正整數1,2,3,n的錯排,問這n個正整數的排列方法有多少種?遞推公式f n ...