LeetCode_22_Apr_4th_Week
Posted KuoGavin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode_22_Apr_4th_Week相关的知识,希望对你有一定的参考价值。
真真是天有不测风云,中间亲人出了点事情就没有精力继续刷题了。万幸是这个时间节点还可以多照顾她,现在情况也稳定下来了,环境也差不多配置好了,再捡回来好了。祝大家都健健康康,生活如意!
April 25th : 398. 随机数索引
April 26th : 883. 三维形体投影面积
April 25th : 398. 随机数索引
主要是随机种子的设置和使用:
srand((unsigned)time(NULL));
rand()%num //等概率获取0~num-1之间的任一数字
解题代码如下:
class Solution
public:
Solution(vector<int>& nums)
srand((unsigned)time(NULL));
for(int i = 0; i < nums.size(); ++i) keys[nums[i]].push_back(i);
int pick(int target)
return keys[target][rand()%keys[target].size()];
private:
unordered_map<int, vector<int>> keys;
;
评论这里有个蓄水池原理,挺有意思的,效率也比上述方法更高
class Solution
public:
vector<int> res;
Solution(vector<int>& nums)
res = nums;
int pick(int target)
int c = 0, index = 0;
for(int i = 0;i < res.size();i++)
if(res[i] == target)
c++;
if(rand() % c == 0) index = i;
return index;
;
April 26th :April 26th : 883. 三维形体投影面积
该题就是面积为,每列最大值的和+每行最大值的和+非0行列数目,解题代码如下:
class Solution
public:
int projectionArea(vector<vector<int>>& grid)
int overLookView = 0, leftLookView = 0, rightLookView = 0;
int rowMax = 0, colMax = 0; //复用行列的遍历,只需交换i,j的位置即可
for(int i = 0; i < grid.size(); ++i)
rowMax = 0, colMax = 0;
for(int j = 0; j < grid[i].size(); ++j)
overLookView += grid[i][j] ? 1 : 0;
rowMax = max(grid[i][j], rowMax);
colMax = max(grid[j][i], colMax);
leftLookView += rowMax;
rightLookView += colMax;
return overLookView + leftLookView + rightLookView;
;
以上是关于LeetCode_22_Apr_4th_Week的主要内容,如果未能解决你的问题,请参考以下文章
17 Apr 18 内置函数(isinstance,issubclass)反射 __str__ __del__ __call__ 元类
Leetcode练习(Python):栈类:第103题:二叉树的锯齿形层次遍历:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
Leetcode练习(Python):栈类:第103题:二叉树的锯齿形层次遍历:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。