1605. 给定行和列的和求可行矩阵
模拟就行了。我们遍历每一行的和,以当前列的和为限制,把这个和视为容量,每次都尽可能地把数值分下去。比如rowSum = [3,8], colSum = [4,7]。第一行的和是3,第一列的和是4,所以我们把3全部分配在第一行第一列。对应的,第一列的剩余容量要变化为1。第一行的数值全都分配掉了,所以剩下的全为0;接下来分配第二行,第二行数值为8,然而第一列剩余容量为1,所以第二行第一列只能分配1,剩余数值分配到其余列,以此类推。
至于为什么这样做是对的,因为题目保证了一定有解,而行列和就是根据某一结果计算得到的。用结果根据限制去推初始状态当然是有解且对的。
class Solution {
public:
vector<vector<int>> restoreMatrix(vector<int>& rowSum, vector<int>& colSum) {
int m=rowSum.size();
int n=colSum.size();
vector<vector<int>> res(m,vector<int> (n,0));
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(rowSum[i]>colSum[j]){
res[i][j]=colSum[j];
rowSum[i]-=colSum[j];
colSum[j]=0;
}
else{
res[i][j]=rowSum[i];
colSum[j]-=rowSum[i];
rowSum[i]=0;
break;
}
}
}
return res;
}
};
菩萨蛮【清·纳兰性德】 窗前桃蕊娇如倦,东风泪洗胭脂面。人在小红楼,离情唱《石州》。 夜来双燕宿,灯背屏腰绿。香尽雨阑珊,薄衾寒不寒。
- 石州:指乐府七调之一的商调曲名。商调之音凄怆哀怨,多表达凄清伤感之情。李商隐《代赠》:“东南日出照高楼,楼上离人唱《石州》。”
- 灯背屏腰绿:绿,指乌黑发亮的颜色,古诗词中多以之形容乌黑的头发。如唐李商隐《戏题枢言草阁三十二韵》:“年颜各少壮,发绿齿尚齐。”宋晏几道《生查子》:“君貌不长红,我鬓无重绿。”但此处引申为昏暗不明。即谓双燕背灯而宿,其双双身影落到了屏风中间(屏腰)会呈现出昏暗不明之景象。
- 雨阑珊:雨将尽。宋贺铸《小重山》:“歌断酒阑珊,画船箫鼓转,绿杨湾。”