zoukankan      html  css  js  c++  java
  • leetcode-每日打卡-day 4

    leetcode 每日打卡

    附上kuangbin大佬话激励自己:
    人一我百,人十我万,追逐青春的梦想,怀着自信的心,永不放弃!
    2020.2.11


    记录下来自己做题时得思路,并不一定是最优解

    1338. 数组大小减半

    类内申请的空间不向平时刷题时申请的全局变量直接是初始化好的,要自己手动初始化

    class Solution {
    public:
        int minSetSize(vector<int>& arr) {
            // 统计每个数字的出现次数安排出现次数排序
            // 从头遍历找到第一个一次相加个数找到第一个大于 len(arr) / 2的集合个数
            static int book_[100005];
            fill(book_,book_+100005,0);
            vector<int> ans;
            for(int i = 0;i <arr.size();i++ )
            {
                if(book_[arr[i]] == 0)
                {
                    book_[arr[i]]++;
                    ans.push_back(arr[i]);
                }else book_[arr[i]]++;
            }
            sort(ans.begin(),ans.end(),[](const auto &a, const auto &b){
                return book_[a] > book_[b];});
            int res = 0,cnt = 0 , n = arr.size() / 2;
            for(int i = 0;i < ans.size();i ++)
            {
                if(res + book_[ans[i]] >= n)
                {
                    cnt = i + 1;break;
                }else res += book_[ans[i]];
            }
            return cnt;
        }
    };
    

    1046. 最后一块石头的重量

    tips : 优先队列 (大顶堆)
    //回头要复习休闲队列的用法 先占坑

    class Solution {
    public:
        int lastStoneWeight(vector<int>& stones) {
            priority_queue<int> ans;
            for(int i = 0;i < stones.size(); i++)
                ans.push(stones[i]);
            while(ans.size() >= 2)
            {
                int x = ans.top();ans.pop();
                int y = ans.top();ans.pop();
                if(x != y)ans.push(x-y);
            }
            if(ans.size() > 0)return ans.top();
            else return 0;
        }
    };
    

    860. 柠檬水找零

    class Solution {
    public:
        bool lemonadeChange(vector<int>& bills) {
            int sum[3] = {0,0,0};
            for(int i = 0;i < bills.size();i ++)
            {
                if(bills[i] == 5)
                {
                    sum[0]++;
                }
                if(bills[i] == 10)
                {
                    if(sum[0] == 0)return false;
                    else{
                        sum[0]--;sum[1]++;
                    }
                }
                if(bills[i] == 20)
                {
                    if(sum[1] >= 1 && sum[0] >= 1)
                    {
                        sum[2]++;sum[1]--;sum[0]--;
                    }else if(sum[1] == 0 && sum[0] >= 3)
                    {
                        sum[2]++;sum[0]-=3;
                    }else return false;
                }
            }
            return true;
        }
    };
    
  • 相关阅读:
    VTK 体绘制讨论_光照&阴影、VTKLODProp3D
    VTK 体绘制讨论_颜色传输函数
    VTK 体绘制讨论_梯度不透明度传输函数
    VTK 体绘制讨论_不透明度传输函数
    VTK 体绘制裁剪_Cripping技术
    VTK 体绘制裁剪_Cropping技术
    VTK 纹理映射体绘制_三维纹理映射
    VTK 纹理映射体绘制_二维纹理映射
    VTK 体绘制_固定点光线投影体绘制与GPU加速光线投影体绘制
    VTK 体绘制_光线投影+最大密度投影+等值面法
  • 原文地址:https://www.cnblogs.com/wlw-x/p/12296871.html
Copyright © 2011-2022 走看看