LeetCode 第 149 場周賽

2022-02-06 14:03:29 字數 1686 閱讀 8284

1.1 題目描述

1.2 解題思路

比較容易的一題,搞清楚平年、閏年的判定規則,就很容易做出來。

1.3 解題**

class solution 

totalday += day;

return totalday;

}private int getday(int year, int month) ;

return month == 2 && isleepyear(year) ? datyof12month[month] + 1 : datyof12month[month];

}//是否是閏年 是 29天 ,不是 28天

private boolean isleepyear(int year)

return year % 4 == 0;}}

2.1 題目介紹
這裡有 d 個一樣的骰子,每個骰子上都有 f 個面,分別標號為 1, 2, ..., f。

我們約定:擲骰子的得到總點數為各骰子面朝上的數字的總和。

如果需要擲出的總點數為 target,請你計算出有多少種不同的組合情況(所有的組合情況總共有 f^d 種),模 10^9 + 7 後返回。

2.2 解題思路

該題屬於計數型動態規劃

根據題意,設dp[d][target]是用擲d個骰子,骰子的面數f,得到和為target的方法數。

假設d=3,f=5,target = 19

(1)最後一步:

d[3][19] = d[2][19-1] +  d[2][19-2] +  d[2][19-3] +  d[2][19-4] +  d[2][19-5]
由於 d[3][19]初始化為0,所以上面的公式可以簡化為

for (i = 1;i<5;i++)

d[3][19] += d[3-1][19 - i]

(2)初始條件當只有乙個骰子時,有f個面,我們知道獲得x(1<=x<=f)的方法均為1種。

所以

for(i=1;i(3)狀態轉移方程for(i = 2;i<=d;i++)

for(j = 1;j<=target;j++)

for (k = 1;k<=f;k++)

// j>=k

dp[i][j] += d[i-1][j-k]

(4)邊界迴圈結束,i = d,j = target,即到達邊界點,也就求出解。

2.3 解題**

public int numrollstotarget(int d, int f, int target) 

//骰子數

leetcode第149場周賽(8 11)

給你乙個按yyyy mm dd格式表示日期的字串date,請你計算並返回該日期是當年的第幾天。通常情況下,我們認為 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此類推。每個月的天數與現行公元紀年法 格里高利歷 一致。class solution object def ord...

leetcode 第132場周賽

愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字n。在每個玩家的回合,玩家需要執行以下操作 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利時才返回true,否則返回false。假設兩個玩家都以最佳狀態參與遊戲。示例 1 輸入 2輸出 true解釋 愛...

leetcode周賽 第176場

題目描述 給你乙個 m n 的矩陣 grid,矩陣中的元素無論是按行還是按列,都以非遞增順序排列。請你統計並返回 grid 中 負數 的數目。示例 1 輸入 grid 4,3,2,1 3,2,1,1 1,1,1,2 1,1,2,3 輸出 8 解釋 矩陣中共有 8 個負數。示例 2 輸入 grid 3...