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的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode_22_Apr_2nd_Week

LeetCode_22_Apr_2nd_Week

17 Apr 18 内置函数(isinstance,issubclass)反射 __str__ __del__ __call__ 元类

Leetcode练习(Python):栈类:第103题:二叉树的锯齿形层次遍历:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

Leetcode练习(Python):栈类:第103题:二叉树的锯齿形层次遍历:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

3rd/Apr/2018__21:02